【发布时间】:2012-04-24 10:04:53
【问题描述】:
我认为对 NaN 进行任何数学运算的结果都应该返回一个 NaN,但是 Math.round(Float.NaN) == 0
Math.round() 的这种行为的基本原理是什么?
奇怪的是,C# 的行为不同:http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
【问题讨论】:
-
正如@pst 所说,它为 NaN 定义的正常行为:“如果参数为 NaN,则结果为 0”。
-
基本原理是
Math.round()在 NaN 上调用时曾经存在一个错误,它可能会破坏未来对Math.round()的调用:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4755500 -
差别很可能是;在 Java 中,它返回
long,它不能是Double.NaN,而在 C# 中,它返回double
标签: java floating-point nan