JavaScript-检测正零和负零之间的差异
我用它来计算两次之间的差值。这个图书馆的奇怪之处在于今天和今天的区别是0。今天和明天的差值是-0 我的问题是,如何区分0和-0。JavaScript似乎对它们一视同仁 例如,如果我编写以下代码:JavaScript-检测正零和负零之间的差异,javascript,momentjs,Javascript,Momentjs,我用它来计算两次之间的差值。这个图书馆的奇怪之处在于今天和今天的区别是0。今天和明天的差值是-0 我的问题是,如何区分0和-0。JavaScript似乎对它们一视同仁 例如,如果我编写以下代码: if (tomorrow === -0) console.log('It is tomorrow!'); else if (tomorrow === 0) console.log('It is today!'); 这里有一个关于它如何处理返回值的示例(我在澳大利亚,因此根据您在word
if (tomorrow === -0)
console.log('It is tomorrow!');
else if (tomorrow === 0)
console.log('It is today!');
这里有一个关于它如何处理返回值的示例(我在澳大利亚,因此根据您在word中的位置,您可能需要调整今天和明天的日期)正如(和评论中)所指出的,在JavaScript中,+0====-0
通过设计确实计算为true
您可以使用Infinity
/-Infinity
来查看差异(从技术上讲,+0
/-0
可能不是生成无限值的唯一数字,因此我保留了额外的签入):
有关更多详细信息以及ECMAScript 5的另一个解决方案,请参见:
function isNegative0(x) {
if (x!==0) return false;
var obj=Object.freeze({z:-0});
try {
Object.defineProperty(obj,'z',{value:x});
} catch (e) {return false};
return true;
}
1/val>0
将执行您想要的操作。对于阳性返回true
,对于阴性返回false
这是因为
1/-0
返回负无穷大,而1/0
返回正无穷大,这两个值可以比较。你也可以为我做一些类似于1/val==Infinity
的事情,明天将显示为-1
,而不是-0
。(通过你的小提琴)关于0和-0的问题,你能看看这个吗?你现在在哪里,就像在地球上一样?当我在我的大陆用23
和24
尝试时,我得到了你的结果。然而,这两种情况下的天数差异实际上都是零,因为现在是第23天(所以是零天),距离第24天不到半天,也就是零天。在JavaScript中,0
是=
到-0
。今天和明天之间的差异不应该是1吗?从ES2015开始,您还可以检查Object.is()是否相等。它还检查特殊情况(例如Object.is(-0,-0)为true,Object.is(0,-0)为false)
function isNegative0(x) {
if (x!==0) return false;
var obj=Object.freeze({z:-0});
try {
Object.defineProperty(obj,'z',{value:x});
} catch (e) {return false};
return true;
}