浮点域错误

Sas*_*sha 7 ruby ruby-on-rails-3

刚在我的应用程序中得到一个"FloatDomainError",消息"NaN",服务器通常会在其中描述攻击.服务器错误页面指向我这些行(嗯,第一行):

n = ((self.weight * (c.percent)/100) / c.package_weight).to_i
n.times do 
Run Code Online (Sandbox Code Playgroud)

问题似乎是.to_i,这意味着将总数转换为8.35整数,所以我可以做n次.

问题是,如果我把to_i带走,我得到一个错误告诉我,逻辑上说,浮动8.35没有方法"次".但我不明白为什么它不让我把8.35整理成一个整数.我也试过.floor,但是我得到了FloatDomainError.

关于如何解决这个问题的想法,我可以让它发挥作用?

谢谢!

Mat*_*tzi 15

此错误意味着您尝试将NaN值转换为int.NaN代表"不是数字".这可能意味着你的计算存在缺陷而不会产生8.35.也许价值c.package_weight为零,你可以除以它.

  • 要为正确答案添加更多上下文,特别是将0.0除以0或0.0.如果它是除以0.0的任何其他数字,则例外是"FloatDomainError:Infinity".如果将它除以普通0,则为"ZeroDivisionError". (3认同)