12

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

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

4

6 回答 6

38

%应该管用

variable % 1 != 0

检查这个RubyFiddle

这也是一个JavaScript fiddle

于 2013-04-18T15:49:51.143 回答
12

始终用于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
于 2013-04-18T19:28:24.460 回答
7

myValue == myValue.floor

或者如果您真的想专门检查 0.5、1.5 等

myValue - myValue.floor == 0.5

于 2013-04-18T15:54:19.260 回答
2
(2.50).to_s.include?('.5') #=> true
(2).to_s.include?('.5') #=> false
于 2013-04-18T15:58:23.550 回答
0
with_decimal = 1.5
without_decimal = 2

您可以在将其更改为整数时检查数字是否相同。

Integer(with_decimal) != with_decimal
# => true


Integer(without_decimal) != without_decimal
# => false
于 2020-09-23T10:48:11.553 回答
-1

尝试

n = 1.5
# => 1.5

n - Integer(n) == 0.5
# => true
于 2013-04-18T16:52:49.227 回答