我有一个要求,我必须确定该数字是正0还是负0,并为这些数字进行颜色编码。这仅适用于0,不能大于或小于0

即:


0.00000983(正零)
-0.0000343(负零)


我尝试了下面的方法,但这对于0具有小数的值没有帮助。请指导。

function isMinusZero(value) {
  return 1/value === -Infinity;
}

isMinusZero(0); // false
isMinusZero(-0); // true

最佳答案

这是一个替代方案:



function isMinusZero(value) {
  if (Object.is(value, -0)) return true;   // handles OP's specific requirement
  if (value === 0) return false;
  return 1/Math.abs(Math.ceil(value)) === Infinity;
}

console.log(isMinusZero(1234)); // false
console.log(isMinusZero(-1223)); // false
console.log(isMinusZero(0)); // false
console.log(isMinusZero(-0)); // true
console.log(isMinusZero(0.0000000000000000000000000000000000000000976767)); // false
console.log(isMinusZero(-0.0000000000000000000000000000000000000000967676767)); // true
console.log(isMinusZero(-0.0000000000003400003400000000000000034000000000967676767)); // true





参考文献:


Object.is()
Math.abs()
Math.ceil()
Infinity

09-13 09:47