IEEE754 编号

问题描述

在哪些情况下 n + 0 不等于 n,其中 n 是一个数字(在 IEEE754 标准中,或更准确地说是双精度浮点数/64 位浮点数)?

>

所以:

function isNotSame(n: number) {
  return n + 0 !== n;
}

返回真。 例如:

function isNotSame(n) {
  return n + 0 !== n;
}

console.log(isNotSame(Number.NaN));

返回真;

解决方法

-0 如果您使用 Object.is 进行比较:

Object.is(-0 + 0,-0)
//=> false

NaN 如果:

NaN + 0 === NaN
//=> false

但是:

Object.is(NaN + 0,NaN)
//=> true