我在类Math中的静态方法round()中注意到了一个难以理解的事情:
Math.round(0.4999999999999999); // is 0
Math.round(0.49999999999999999); // is 1
Run Code Online (Sandbox Code Playgroud)
为什么?
Tom*_*icz 14
0.49999999999999999有太多有效数字,一个double变量无法存储它们.因此在编译期间会发生隐式舍入.当你打电话时Math.round(),参数已经是0.5(检查自己:0.49999999999999999 == 0.5收益率true).
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |