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);
}-*/;