2017-02-10 72 views
0

在Java中,我可以0D and -0D區分:GWT符號零

new Double("0").equals(new Double("-0")) // false 

但很顯然,這似乎GWT transpiled我的Java與JavaScript後無法再工作。我甚至在GWT dev-mode中獲得false,但在GWT super-dev-mode中獲得true

我已經read在JavaScript的

0.0 === -0.0 // true 

Object.is(0, -0) // false 

我怎麼能強迫GWT使用Object.is對比?或者是否有其他解決方案來檢查我是否得到負值或正值?

回答

0

OK,經過一些調查研究,我想出了利用JSNI的解決方案:

native boolean isNegative(double value) 
/*-{ 
    return 1/value < 0; 
}-*/; 

1/-0產生在JavaScript -Infinity,這一個工程。

1

你可以聲明使用JSNI使用Object.is的新方法:

public static native boolean compareDoubles(Double a, Double b) /*-{ 
    return Object.is(a, b); 
}-*/; 
+0

+1這似乎是工作,但是當我在GwtTestCase使用'Object.is'我得到'com.google.gwt.core .client.JavaScriptException:(null)' – Sebastian

+0

嗯,它有可能在託管的'HtmlUnit'瀏覽器下表現不一樣。我已經看到行爲不同的案例。我目前還沒有設置調查環境,但今天晚上我會試着去看看 – Stik