我刚刚发现了一个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?检查它...那么它应该工作如您所愿......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top