在此计算中:
months = (saved_cents / spend_cents).to_f.floor
我收到以下错误:
FloatDomainError: NaN
我认为saved_cents
和spend_cents
是花车,这就是为什么我不明白为什么会收到此错误。
出现此错误的原因是什么?我该如何解决?
答案 0 :(得分:2)
根据文档,FloatDomainError
是:
尝试将特殊浮点值(特别是
Infinity
或NaN
)转换为不支持它们的数字类时引发。
在您的代码中,当两个值均为零时,会出现FloatDomainError
:
saved_cents = 0.0
spend_cents = 0.0
(saved_cents / spend_cents).floor
#=> FloatDomainError: NaN
因为零除以零是NaN
:
saved_cents / spend_cents
#=> NaN
虽然NaN
是浮点数,但尝试向其发送floor
消息会导致该错误:
Float::NaN.floor
#=> FloatDomainError: NaN
出现此错误的原因是什么?我该如何解决?
仔细检查您的输入。也许还有另一个错误,它会将值意外设置为0.0
。