给定float A
和float B
,两者之间有区别吗:
float C = A * B;
还有:
float D = (float) ( (double)A * (double) B);
最佳答案
很难解释你的问题。我相信您实际上是在问,给定 float
的 x
和 y
,
float z = x * y;
在数值上相当于:
float z = (double)x * (double)y;
这个问题无法完全笼统地回答,因为 C 和 C++ 需要很少的 float
和 double
类型。但是,如果假设 float
和 double
分别是 IEEE-754 binary32 和 binary64,那么答案是肯定的;两个表达式仅通过一次舍入进行计算,这是 IEEE-754 要求正确舍入的,因此结果是相同的。
关于c++ - 分辨率有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740299/