我想检查号码是否均匀! 我尝试了以下方法:
a = 4.0
a.is_a? Integer
=> false
a.even?
=> undefined method for Float
那么如何检查数字是否均匀?
答案 0 :(得分:13)
如果您不确定您的变量在小数点后是否有任何内容并想在转换为整数以检查奇数/偶数之前进行检查,您可以执行以下操作:
a = 4.6
b = 4.0
puts a%1==0 && a.to_i.even? #=> false
puts b%1==0 && a.to_i.even? #=> true
另外,如果你想创造一个均匀的? Float类的方法:
class Float
def even?
self%1==0 && self.to_i.even?
end
end
a = 4.6
b = 4.0
a.even? #=> false
b.even? #=> true
答案 1 :(得分:2)
将其设为Integer
然后:
a = 4.0
a.to_i == a && a.to_i.even? #=> true
答案 2 :(得分:2)
请记住数字的转换方式:
(4.0).to_i # same as Integer(4.0)
=> 4
(4.5).to_i
=> 4
(4.9).to_i
=> 4
使用round
可能更安全:
(4.0).round
=> 4
(4.5).round
=> 5
(4.9).round
=> 5
当然你可以打电话给even
@Yu Hao写道:
(4.5).round.even?
=> false
您还可以轻松观察已知浮动的“功能”:
(4.499999999999999).round.even?
=> true
(4.4999999999999999).round.even?
=> false