Я хочу проверить, есть ли число! Я попробовал следующее:Рубин проверить, если даже число, поплавок
a = 4.0
a.is_a? Integer
=> false
a.even?
=> undefined method for Float
Так как я могу проверить, если число четное?
Я хочу проверить, есть ли число! Я попробовал следующее:Рубин проверить, если даже число, поплавок
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
Но когда у меня есть число, равное 0,5, оно также возвращает true! –
Я не думаю, что 4.2 считается четным. – atamanroman
@JohnSmith Что нужно добавить к вопросу, я думал, вы имеете в виду, что это целое число типа 'Float'. –
Просто имейте в виду, как преобразуются номера:
(4.0).to_i # same as Integer(4.0)
=> 4
(4.5).to_i
=> 4
(4.9).to_i
=> 4
Использование round
может быть безопаснее:
Тогда вы, конечно, может позвонить even
как @Yu Hao написал (а):
(4.5).round.even?
=> false
Вы также можете легко соблюдать известные поплавки «особенность»:
(4.499999999999999).round.even?
=> true
(4.4999999999999999).round.even?
=> false
Хорошо, в моем случае мне нужно только проверить, имеет ли номер во втором символе 5, например, в 0,5 или 3,5! –
Для проверки того, существует ли 'f', вы всегда можете использовать старый добрый:' 0 <(eval '-' * f + '1') ': P – polvoazul