在Java中,我可以区分0D和-0D:
new Double("0").equals(new Double("-0")) // false
但显然,在GWT将我的Java转换为JavaScript之后,这似乎不再有效。我什至在 GWT 开发模式下得到false
,但在 GWT 超级开发模式下true
。
我已经在JavaScript中读过
0.0 === -0.0 // true
但
Object.is(0, -0) // false
如何强制 GWT 使用Object.is
比较?或者有没有其他解决方案来检查我是否得到负零或正零?
您可以使用使用
JSNI 声明一个新方法,该方法使用 Object.is
:
public static native boolean compareDoubles(Double a, Double b) /*-{
return Object.is(a, b);
}-*/;
好的,经过更多的研究,我想出了一个使用 JSNI 的解决方案:
native boolean isNegative(double value)
/*-{
return 1 / value < 0;
}-*/;
正如1/-0
在JavaScript中生成-Infinity
一样,这个可以工作。