Подтвердить что ты не робот

Как объявить NaN (не число) в Ruby?

Также "NaN".to_f возвращает 0 вместо NaN.

4b9b3361

Ответ 1

Так как Ruby 1.9.3 существует константа, чтобы получить значение NaN

Float::NAN
=> NaN

Ответ 2

Если вам нужно проверить, является ли число NaN, вы можете использовать #nan? на нем:

ruby-1.8.7-p352 :008 > (0/0.0).nan? #=> true 
ruby-1.8.7-p352 :009 > (0/1.0).nan? #=> false 

Ответ 3

Самый простой способ - использовать 0.0 / 0.0. "NaN".to_f не работает, и там обсуждается в этом потоке о том, почему.

Ответ 4

0.0 / 0.0 работает для меня на рубине 1.8.6.

В потоке, связанном с Pesto, есть эта функция, которая должна работать на платформах, где числа с плавающей запятой реализованы в соответствии с IEEE 754:

def aNaN
    s, e, m = rand(2), 2047, rand(2**52-1)+1
    [sprintf("%1b%011b%052b", s,e,m)].pack("B*").unpack("G").first
end

Ответ 5

Назначение переменной в Rails может быть выполнено таким образом (полезно для модульного тестирования):

o.amount = BigDecimal.new('NaN')
expect(o.valid?).to be false