如何检查数字是否有小数?

时间:2013-04-18 15:48:03

标签: ruby

我想专门检查一个给定的数字是否包含“.5”

我只处理整数和一半(0.5,1,1.5等)。

6 个答案:

答案 0 :(得分:26)

%应该有效

variable % 1 != 0

选中此fiddle

编辑:这是rubyfiddle

答案 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
相关问题