Chr*_*ris 5 java floating-point jvm
在 JVM 上,两个双精度值之间的除法是否总是产生与整数除法相同的精确结果?
具有以下先决条件:
x和实际上都y保存整数值。例如在下面的代码中
double x = ...;
int resultInt = ...;
double y = x * resultInt;
double resultDouble = y / x; // double division
总是resultDouble相等resultInt还是可能会有一些精度损失?
是的,如果x和y都在int范围内,除非除法是-2147483648.0 / -1.0。在这种情况下,双精度结果将匹配整数除法的结果,但不匹配int除法。
如果两个除法输入都在int范围内,则它们都可以精确表示为double。如果它们的比率是整数并且除法不是,则-2147483648.0 / -1.0比率在int范围内,因此可以精确地表示为double。这double是最接近除法结果的值,因此一定是除法结果double。
x如果和y是范围之外的整数,则该推理不一定适用int。
| 归档时间: | 
 | 
| 查看次数: | 1116 次 | 
| 最近记录: |