Javascript - MIN_VALUE vs MIN_SAFE_INTEGER vs -Infinity



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

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吗?

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

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

最新更新