我有这样的代码:
double x = ...;
double y = ...;
double z = x * y;
假设x和y分配给整数(例如,double x = 6,double y = 5),x * y适合48位。我保证z
不会失去精确度吗?换句话说,z - floor(z) == 0.0
?
假设编译器使用IEEE-754标准,并且双重使用64位。
答案 0 :(得分:1)
是的,保证不会失去精确度。浮点的基本规则是,精确计算结果,然后尽可能地存储。由于最多2 ^ 53的所有整数都可以准确表示,z
将是准确的。