关于以双精度存储的整数相乘的精度

On precision in multiplying integers stored as doubles

我有这样的代码:

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 标准,double 使用 64 位。

是的,保证不会丢失精度。浮点数的基本规则是,结果被精确计算,然后尽可能接近地存储。由于所有 2^53 以内的整数都可以精确表示,因此 z 将是精确的。