c++ - 分辨率有区别吗?

标签 c++ c numeric numerical-methods

给定float Afloat B,两者之间有区别吗:

float C = A * B;

还有:

float D = (float) ( (double)A * (double) B);

最佳答案

很难解释你的问题。我相信您实际上是在问,给定 floatxy

float z = x * y;

在数值上相当于:

float z = (double)x * (double)y;

这个问题无法完全笼统地回答,因为 C 和 C++ 需要很少的 floatdouble 类型。但是,如果假设 floatdouble 分别是 IEEE-754 binary32 和 binary64,那么答案是肯定的;两个表达式仅通过一次舍入进行计算,这是 IEEE-754 要求正确舍入的,因此结果是相同的。

关于c++ - 分辨率有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740299/

相关文章:

c++ - 将派生类的 unique_ptr 添加到基类 unique_ptr 的 vector 中

c++ - CMake 和 Qt : directory for moc files/clean rules

c++ - 获取使用 std::chrono 花费的平均时间

c - 错误 : assignment of member ai_family in read-only object

javascript - 防止用户在小数点前 2 位数字后输入更多数字

windows - Windows 8 应用程序中 Numericbox 的替代品?

c++ - 当我有一堆小部件时,Qt 如何设置全局 mouseReleaseEvent

c - C 程序中的 stdout 转义查询和 stdin 冲突(无 ncurses)

将 * 指针转换为 *** 指针

c# - 匹配数字类型的通用约束