ruby on rails 如何处理 NaN [英] ruby on rails how to deal with NaN

查看:50
本文介绍了ruby on rails 如何处理 NaN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我读过几篇关于 NaN 的文章,但不知道如何在 Ruby on Rails 中处理它.我想检查一个值是否是 NaN 我想用零(0)替换它.我尝试了以下

I have read few posts regarding NaN but did not figure out how to deal with it in Ruby on Rails. I want to check a value if it is a NaN I want to replace it with Zero(0). I tried the following

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

当百分比具有 NaN 时,它会返回 false.

when percent has NaN it returns me false.

我对记录器做了一些改动

I have made few changes in the logger

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 is instance of Float. Use Float#nan? method.

>> 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 也可以是 的一个实例大十进制:

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 如何处理 NaN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆