Javascript - 识别正 0 和负 0 数
Javascript - Identifying Positive 0 and negative 0 numbers
我有一个要求,我必须确定数字是正数 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) {
return value.toString().startsWith("-");
}
console.log(
isMinusZero(0), // false
isMinusZero(-0) // true
)
.
您正在搜索Math.sign()
- 如果参数为正,returns1.
- 如果参数为负数,returns -1.
- 如果参数为正零,returns0.
- 如果参数为负零,returns -0.
- 否则返回NaN。
另一种使用Object.is的解决方案:
function isMinusZero(value) {
return Object.is(-0, value);
}
console.log(
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
参考文献:
你可以使用Math.sign()
function isZeroSign(value){
return Math.sign(value) > 0 ;
}
console.log(isZeroSign(0.00022));
console.log(isZeroSign(-0.0033));
console.log(isZeroSign(5500));
console.log(isZeroSign(-0.000000000000000000000000041))
我有一个要求,我必须确定数字是正数 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) {
return value.toString().startsWith("-");
}
console.log(
isMinusZero(0), // false
isMinusZero(-0) // true
)
.
您正在搜索Math.sign()
- 如果参数为正,returns1.
- 如果参数为负数,returns -1.
- 如果参数为正零,returns0.
- 如果参数为负零,returns -0.
- 否则返回NaN。
另一种使用Object.is的解决方案:
function isMinusZero(value) {
return Object.is(-0, value);
}
console.log(
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
参考文献:
你可以使用Math.sign()
function isZeroSign(value){
return Math.sign(value) > 0 ;
}
console.log(isZeroSign(0.00022));
console.log(isZeroSign(-0.0033));
console.log(isZeroSign(5500));
console.log(isZeroSign(-0.000000000000000000000000041))