我想专门检查给定数字是否包含“.5”
我只处理整数和半数(0.5、1、1.5 等)。
始终用于BigDecimal
检查数字的小数部分以避免浮点错误:
require 'bigdecimal'
BigDecimal.new(number).frac == BigDecimal("0.5")
例如:
BigDecimal.new("0.5").frac == BigDecimal("0.5")
# => true
BigDecimal.new("1.0").frac == BigDecimal("0.5")
# => false
还有一个更通用的解决方案来查看一个数字是否为整数:
BigDecimal.new("1.000000000000000000000000000000000000000001").frac.zero?
# => false
myValue == myValue.floor
或者如果您真的想专门检查 0.5、1.5 等
myValue - myValue.floor == 0.5
(2.50).to_s.include?('.5') #=> true
(2).to_s.include?('.5') #=> false
with_decimal = 1.5
without_decimal = 2
您可以在将其更改为整数时检查数字是否相同。
Integer(with_decimal) != with_decimal
# => true
Integer(without_decimal) != without_decimal
# => false
尝试
n = 1.5
# => 1.5
n - Integer(n) == 0.5
# => true