红宝石如何应对NaN

保罗·菲尼克斯

我读了几篇有关NaNRuby on Rails的文章,但没有弄清楚如何处理它。我想检查一个值是否是NaN我想用零(0)替换它。我尝试了以下

logger.info(".is_a? Fixnum #{percent.is_a? Fixnum}")

当百分比有NaN它返回我为假。

我在记录器中所做的更改很少

logger.info("Fixnum #{percent.is_a? Fixnum} percent #{percent}")

输出量

Fixnum false percent 94.44444444444444
Fixnum false percent NaN
Fixnum false percent 87.0
虚假的

NaN是的实例Float使用Float#nan?方法。

>> nan = 0.0/0 # OR nan = Float::NAN
=> NaN
>> nan.class
=> Float
>> nan.nan?
=> true
>> nan.is_a?(Float) && nan.nan?
=> true
>> (nan.is_a?(Float) && nan.nan?) ? 0 : nan
=> 0

更新

NaN也可以是的实例BigDecimal

((nan.is_a?(Float) || nan.is_a?(BigDecimal)) && nan.nan?) ? 0 : nan

要么

{Float::NAN => 0, BigDecimal::NAN => 0}.fetch(nan, nan)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章