我最近在执行此表达式时遇到错误:
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
一些问题:
Number.MIN_VALUE
和零的最大值等于5e-324?Number.MIN_SAFE_INTEGER
,我们应该一直使用它吗?还是Number.MIN_VALUE
有用例?-Inifinity / Infinity
吗?答案 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
这完全取决于代码的目的。