Javascript-MIN_VALUE,MIN_SAFE_INTEGER和-Infinity

时间:2019-06-03 16:11:47

标签: javascript numbers

我最近在执行此表达式时遇到错误:

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 个答案:

答案 0 :(得分:1)

  

为什么要取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

这完全取决于代码的目的。