Ruby检查是否偶数,浮点数

我想检查号码是否均匀! 我尝试了以下方法:

a = 4.0 a.is_a? Integer => false a.even? => undefined method for Float 

那么如何检查数字是否均匀?

如果你不确定你的变量是否有小数点之后的任何东西,并且想要在转换为整数之前检查以检查奇数/偶数,你可以这样做:

 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 

然后使它成为Integer

 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 

当然, even @Yu Hao写道,你也可以打电话:

 (4.5).round.even? => false 

您还可以轻松观察已知的浮动“function”:

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