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