Ruby检查是否为偶数、浮点

Ruby检查是否为偶数、浮点,ruby,Ruby,我想检查一下号码是否是偶数! 我尝试了以下方法: a = 4.0 a.is_a? Integer => false a.even? => undefined method for Float 那么,如何检查数字是否为偶数呢?将其设为整数,然后: a = 4.0 a.to_i == a && a.to_i.even? #=> true 请记住数字是如何转换的: (4.0).to_i # same as Integer(4.0) => 4 (4.5

我想检查一下号码是否是偶数! 我尝试了以下方法:

a = 4.0
a.is_a? Integer

=> false

a.even?

=> undefined method for Float

那么,如何检查数字是否为偶数呢?

将其设为整数,然后:

a = 4.0
a.to_i == a && a.to_i.even?  #=> true

请记住数字是如何转换的:

(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
当然,你也可以像@Yu Hao所写的那样调用
甚至

(4.5).round.even?
=> false
您还可以很容易地观察已知的浮动“特征”:

(4.499999999999999).round.even?
=> true
(4.4999999999999999).round.even?
=> false

如果您不确定变量在小数点后是否有任何内容,并且希望在转换为整数以检查奇数/偶数之前进行检查,则可以执行以下操作:

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

但是当我有一个像0.5这样的数字时,它也会返回true!我不认为4.2被认为是偶数。@JohnSmith这应该被添加到问题中,我想你的意思是它是一个类型为
Float
的整数。你可以做a.to_I.even?好的,在我的例子中,我只需要测试第二个字符中的数字是否有5,比如0.5或3.5!