2014-10-28 4 views
14

Использование Node.js, я вычислением выражения:Почему 0 меньше, чем Number.MIN_VALUE в JavaScript?

0 < Number.MIN_VALUE 

К моему удивлению, это возвращает true. Почему это? И: Как я могу получить наименьшее количество доступных, для которых сравнение работает так, как ожидалось?

+2

'Номер.MIN_SAFE_INTEGER' –

+0

@Vohuman: но не равен нулю больше всех отрицательных чисел? – dandavis

+0

'Number.MIN_SAFE_INTEGER' является' undefined' в Node.js 0.10.x. –

ответ

24

Number.MIN_VALUE5e-324, т. Е. Наименьшее положительное число, которое может быть представлено в пределах точности поплавка, то есть это как можно ближе к нулю. Он определяет наилучшие разрешения, которые дают вам поплавки.

В настоящее время общее наименьшее значение - Number.NEGATIVE_INFINITY, хотя это не очень числовое значение в строгом смысле слова.

+1

Спасибо, что объяснили поведение * и *, указав жизнеспособную альтернативу :-) –

+0

Не могу поверить, что мне действительно нужно было посмотреть, почему мой код был неправильным. Я клянусь, javascript, иногда ... – Felipe

1

С Number.MIN_VALUE = 5e-324 = 5 x 10^-324 и его больше, чем 0 (немного больше).
Подробнее here.

+0

'Number.MIN_SAFE_INTEGER' является' undefined' в Node.js 0.10.x. –

+0

только что обновил мой ответ. –

1

Number.MIN_VALUE эквивалентно 5e-324, который больше 0.

0

Использование -Number.MAX_VALUE вместо Number.MIN_VALUE для сравнения:

0 > -Number.MAX_VALUE возвращается true.

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