Javascript - MIN_VALUE vs MIN_SAFE_INTEGER vs -Infinity - PullRequest
0 голосов
/ 03 июня 2019

Я недавно столкнулся с ошибкой, где я сделал это выражение:

Math.max(Number.MIN_VALUE, 0)
// returns 5e-324

Я не совсем уверен, как он вернул это значение, поэтому я попытался перевернуть выражение, чтобы увидеть, что произойдет:

Math.min(Number.MAX_VALUE, 0)
// returns 0

Однако это прекрасно работает.

То, как я исправил первое выражение, так:

Math.max(Number.MIN_SAFE_INTEGER, 0)
// returns 0

Несколько вопросов:

  1. Почему взятие МАКСА Number.MIN_VALUE и нуля равняется 5e-324?
  2. Если у нас есть Number.MIN_SAFE_INTEGER, должны ли мы всегда использовать это или есть вариант использования для Number.MIN_VALUE?
  3. Если я просто использую значения MIN / MAX в качестве начального состояния (которое наверняка будет перезаписано при первом сравнении), я должен использовать вместо него -Inifinity / Infinity?

1 Ответ

1 голос
/ 03 июня 2019

Почему взятие MAX для Number.MIN_VALUE и нуля равно 5e-324

Поскольку Math.MIN_VALUE не является самым низким отрицательным значением.Минимальное положительное значение.Таким образом, все положительные значения больше, чем 0, поэтому он возвращает 5e-324 вместо 0

Если у нас есть Number.MIN_SAFE_INTEGER, всегда ли мы используем это или есть сценарий использования дляNumber.MIN_VALUE?

Я не могу придумать ни одного варианта использования для Number.MIN_VALUE, потому что это небезопасно.Это может привести к неправильным вычислениям в коде.

Если я просто использую значения MIN / MAX в качестве начального состояния (которое наверняка будет перезаписано при первом сравнении), я должен использовать -Inifinity / Infinityвместо этого

Это полностью зависит от цели кода.

...