2010-04-11 2 views
83

У меня есть программа, которая пытается сжать double до нужного номера. Выход я получаю NaN.В Java, что означает NaN?

Что означает NaN на языке Java?

+0

Существует хорошее описание NaN и общих ошибок при использовании NaN в Java: http://ppkwok.blogspot.co.uk/2012/11/java-cafe-1-never-write-nan-nan_24 .html – Phil

ответ

122

this page Взято из:

"NaN" означает "не число". «Нан» производится, если операция с плавающей точкой имеет некоторые входные параметры , которые приводят к тому, что операция производит некоторый неопределенный результат. Например, 0,0, деленное на 0,0, является арифметически неопределенным. Взятие квадратного корня из отрицательного числа также не определено.

+16

Кроме того, NaN определен стандартом IEEE для арифметики с плавающей запятой (IEEE 754), явно явным образом, который Java следует слепо. Чтение стандарта открывает вам глаза на множество вещей, причем несколько значений нуля являются одной из вещей. – Esko

+31

Кроме того, 'NaN' обладает интересным свойством быть единственным« числом », которое не совпадает с самим собой при сравнении. Поэтому общий (и на многих языках единственный) тест, если число 'x' является' NaN', является следующим: 'boolean isNaN (x) {return x! = X;}' – quazgar

+0

Так же, как в стороне: собственный ' isNaN (...) 'не работает, как функция @ quazgar. Вместо этого он даже возвращает 'true', передавая ему не число, как примитивную строку, объект или' undefined'. В этих случаях 'x! == x' вместо этого возвращает' false'. Итак, версия quazgar прекрасно проверяет, является ли 'x' номером NaN *. (Я знаю, что вопрос касается Java, а не JavaScript.) – Arjan

3

Не парень Java, но в JS и других языках я использую его «Not a Number», что означает, что некоторая операция заставила его стать недействительным числом.

3

Это буквально означает «Не номер». Я подозреваю, что что-то не так с процессом конверсии.

Заканчивать раздел Not A Number в this reference

8

NaN означает «не число» и является результатом неопределенных операций над числами с плавающей запятой, как, например, деля нуль на ноль. (Заметим, что при делении ненулевого числа на ноль также обычно не определено в математике, это не приводит к NaN, а к положительной или отрицательной бесконечности).

4

NaN означает «Не количество». Это специальное значение с плавающей запятой, что означает, что результат операции не был определен или не был представлен как действительное число.

См. here для более подробного объяснения этого значения.

4

NaN означает не номер. Он используется для обозначения любого значения, которое математически не определено. Как деление 0.0 на 0.0. Вы можете посмотреть здесь для получения дополнительной информации: https://web.archive.org/web/20120819091816/http://www.concentric.net/~ttwang/tech/javafloat.htm

Отправьте свою программу здесь, если вам нужна дополнительная помощь.

10

NaN означает «не число» и в основном это представление особого значения с плавающей запятой в стандарте IEE 754 floating point. NaN обычно означает, что это значение, которое не может быть выражено с допустимым числом с плавающей запятой.

Преобразование приведет к этому значению, когда преобразованное значение является чем-то другим, например, при преобразовании строки, которая не представляет число.

3

Средство не является числом. Это общее представление о невозможном числовом значении во многих языках программирования.

 Смежные вопросы

  • Нет связанных вопросов^_^