题
我刚刚发现了一个bug在我的节目一定数量的操作,我得到一个FloatDomainError (NaN)
所以,我开始登录与通过数:
if(metric.is_a?(Numeric))
self.metric = metric
else
LOGGER.warn("metric #{metric} is not a number")
self.metric=0
end
但数量正在传递是NaN
这显然is_a?(Numeric)
因为我没有得到我的日志警告,并把它传递指标到我的度量方法=,这是我得到我的FloatDomainError
现在,纠正我,如果我错了,但没有它似乎语义错误有一个NaN
(非数字)是数字类型的?有人可以解释这样对我?
顺便说一句使用JRuby-1.4.1
解决方案
IEEE 754浮点数限定-INFINITY + INFINITY和NotANumber使其能够作出反应由零可以说分割。也可以与这些计算例如2 + INF = INF
NaN的是不是一个的uniqe红宝石特征,它们是用Java,C ++数字,...太
其他提示
我觉得做楠数量使得完美感...
尝试在IRB 0.0 / 0.0 - >结果是NaN(在这种情况下是无穷大)
无限是数学种类的数量,不过,你不能用一个数据类型表达出来......在数学你使用一个特殊的符号太...
PS:你可以使用metric.nan?检查它...那么它应该工作如您所愿......
不隶属于 StackOverflow