我想专门检查一个给定的数字是否包含“.5”
我只处理整数和一半(0.5,1,1.5等)。
答案 0 :(得分:26)
答案 1 :(得分:9)
始终使用BigDecimal
检查数字的小数部分以避免floating point errors:
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
答案 2 :(得分:7)
myValue == myValue.floor
或者如果你真的想特别检查0.5,1.5等
myValue - myValue.floor == 0.5
答案 3 :(得分:1)
(2.50).to_s.include?('.5') #=> true
(2).to_s.include?('.5') #=> false
答案 4 :(得分:0)
with_decimal = 1.5
without_decimal = 2
将数字更改为整数时,您可以检查数字是否相同。
Integer(with_decimal) != with_decimal
# => true
Integer(without_decimal) != without_decimal
# => false
答案 5 :(得分:-1)
尝试
n = 1.5
# => 1.5
n - Integer(n) == 0.5
# => true