为什么 (1 + Number.MIN_VALUE) 等于 1?

问题描述 投票:0回答:1

我注意到这些评估结果为

true

  • (1 + Number.MIN_VALUE) === 1

  • Object.is(1 + Number.MIN_VALUE, 1)

来自文档

Number.MIN_VALUE 静态数据属性表示 JavaScript 中可表示的最小正数值。

我的问题是:

  1. 既然

    Number.MIN_VALUE
    不为零,为什么将它与给定数字相加不会得到不同的数字?

  2. 可以添加到给定数字以产生不同的数字的最小值是多少?

javascript node.js
1个回答
0
投票

对于您的问题:

为了精确比较,由于内部浮点表示的性质,您需要像这样进行比较:

const x = 0.1, y = 0.2, expectedResult = 0.3;

function equalNumber(a,b) {
  return (a - b) < Number.EPSILON;
}

console.log('===', x + y === expectedResult);

console.log('equalNumber', equalNumber((x+y), expectedResult));

对于第二个问题,您要求的号码是

[Number.EPSILON][1]

© www.soinside.com 2019 - 2024. All rights reserved.