Может кто-нибудь объяснить мне нан в Руби?

StackOverflow https://stackoverflow.com/questions/3618844

  •  26-09-2019
  •  | 
  •  

Вопрос

Я только что нашел ошибку в некоторых номерах манипуляций в моей программе, и я получаю FloatDomainError (NaN)

Итак, я начал лесозаготовить номер, переданный с:

if(metric.is_a?(Numeric))
  self.metric = metric
else
  LOGGER.warn("metric #{metric} is not a number")
  self.metric=0
end

Но число, переданное в NaN который видимо is_a?(Numeric) так как я не получаю предупреждение о журнале, и он проходит метрика на мой метрический метод, который в том, где я получаю мой FloatDomainError

Теперь поправьте меня, если я ошибаюсь, но не кажется ли семантически неверным иметь NaN (Не число) быть типа числовой ?? Может кто-то объяснить это мне?

Кстати, используя jruby-1.4.1

Это было полезно?

Решение

IEEE 754 Числа с плавающей плавающей точкой определяют -infinity + Infinity и NotAnumber, чтобы позволить этому реагировать на то, чтобы подразделить подразделение ноль. Вы также можете рассчитать с ними, например, 2 + INF = INF

NAN не является функцией Uniqe Ruby, они являются числовыми в Java, C ++, ... тоже

Другие советы

Я думаю, что делает NAN ряд делает идеально почувствовать ...

попробуйте 0.0 / 0.0 в IRB -> результат нан (который в этом случае является бесконечности)

Бесконечность математически рода число, но все же, вы не можете выразить его с помощью DataType ... В математике вы тоже используете специальный символ ...

PS: Вы можете использовать метрику .NAN? Чтобы проверить это ... тогда он должен работать, как вы ожидаете ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top