ruby - float 域错误

标签 ruby ruby-on-rails-3

刚刚在我的应用程序中出现“FloatDomainError”,消息“NaN”,服务器通常会在其中描述攻击。服务器错误页面将我指向这些行(好吧,第一行):

n = ((self.weight * (c.percent)/100) / c.package_weight).to_i
n.times do 

问题似乎出在 .to_i 上,它旨在将总计 8.35 转换为整数,这样我就可以做 n.times 了。

问题是,如果我把 to_i 拿走,我会收到一条错误消息,从逻辑上讲,没有针对 float 8.35 的“times”方法。但我不明白为什么它不让我将 8.35 舍入为整数。我也尝试过 .floor,但我得到了 FloatDomainError。

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

谢谢!

最佳答案

此错误表示您试图将 NaN 值转换为 int。 NaN 代表“不是数字”。这可能意味着您的计算有缺陷,结果不是 8.35。也许 c.package_weight 的值为零,你用它除。

关于ruby - float 域错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12704462/

相关文章:

ruby - Jekyll 不在本地提供站点服务

ruby-on-rails - Ruby `require` 在 rails lib 中找不到我的文件

ruby-on-rails - rails 3 : Validate association and show perfectly the validation to the user

ruby-on-rails - rspec put 请求在我的 stub 上的正确参数是什么

ruby-on-rails - Rspec/FactoryGirl : clean database state

ruby-on-rails - 关系 "venues"的新行违反了检查约束 "enforce_srid_latlon"

ruby - ruby 中的 TCPServer 套接字

ruby-on-rails - 将管道分隔的字符串数组转换为 ruby​​ 1.9 中的映射

ruby - 如何删除第一个空格或一定数量的字符后的所有内容?

ruby-on-rails-3 - 尝试将 Community Engine 集成到我的应用程序中