我读过几篇关于NaN的帖子,但没有弄明白如何在Ruby on Rails中处理它.我想判断一个值,如果它是NaN,我想用零(0)替换它.

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

当百分比为NaN时,它返回false.

我对记录器做了一些更改

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

输出

Fixnum false percent 94.44444444444444
Fixnum false percent NaN
Fixnum false percent 87.0

推荐答案

NaNFloat的例子.使用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

UPDATE

NaN could also be an instance of BigDecimal:

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

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

Ruby-on-rails相关问答推荐

Rails7--如何使用内联代码仅为操作运行BEFORE操作

在控制器操作中适当使用ActiveModel Dirty

Ubuntu Webhooks无法读取安装的正确RVM Ruby

API Rails 路由,令牌是路由的一部分

Rails 7.0.4 和 link_to 的数据确认不起作用

如何在 Rails 中声明动态路由范围/命名空间变量?

Rails 7 应用程序 - 引用模型文件时出现未初始化常量错误

rspec中日期时间结束时的分数是多少?

如何使用 Capistrano gem 为生产数据库 seeder ?

如何从 Rails 路由中删除控制器名称?

RSpec 设置会话对象

从 Rails 模型内部访问翻译文件 (i18n)

不带参数的 request.fullpath

删除链接在 Rails 3 视图中发送Get而不是Delete

在本地 Rails 开发环境中获取真实 IP 地址

Groovy/Grails :: Ruby/Rails :: 2011 框架状态

有没有办法列出所有 belongs_to 关联?

sass-rails 助手image-url、asset-url在 rails 3.2.1 中不起作用

如何在 Ruby 类/模块命名空间中翻译模型?

错误:删除表违反外键约束.密钥 id 仍然从表中引用(很多)