Bob*_*r02 7 java double double-precision floating-point-precision
是否有可能建立甚至粗略地说明在处理doublejava中的两个值(加/减)时最大精度损失是多少?可能最坏的情况是两个数字无法准确表示,然后对它们执行操作,这导致一个也无法准确表示的值.
最糟糕的情况是所有精度都可能丢失.例如,如果结果大于最大可表示的有限数,则会发生这种情况.然后它将存储为POSITIVE_INFINITY(或NEGATIVE_INFINITY).
关于您的更新,可以添加.
double a = Double.MAX_VALUE;
System.out.println(a);
double b = a + a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)
结果:
1.7976931348623157E308
Infinity
Run Code Online (Sandbox Code Playgroud)
在线查看:ideone
通常,表示错误的大小与您的数字大小有关.
看看Math.ulp(double).该ULP的double是增量到下一个最高值.例如,如果您添加到数字而一个小于另一个的ulp,则您知道添加将不起作用.如果乘以两个双精度数,则可以将它们的ulps相乘以得到结果的最大误差.
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |