MK.*_*MK. 19 java floating-point nan
我认为对NaN进行任何数学运算的结果都应该给我一个NaN,但是 Math.round(Float.NaN) == 0
Math.round()的这种行为的基本原理是什么?
奇怪的是,C#的行为有所不同:http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
tsk*_*zzy 28
Math.round()被定义为(long)Math.floor(a + 0.5d).
a是NaN,那a+0.5d就是NaN.Math.floor()被delagated到StrictMath.floor()返回NaN时传入NaN.NaN为a时long,它返回0所以最终,归结为为什么要转换NaN为long0.这个问题在这个问题中得到了彻底的讨论.
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |