GWT подписал ноль

В Java я могу различить 0D и -0D:

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

Но, похоже, это больше не работает после того, как GWT перевел мою Java на JavaScript. Я даже получаю false в режиме разработки GWT, но true в режиме GWT super-dev.

Я читал это в JavaScript

0.0 === -0.0 // true

но

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

Как я могу заставить GWT использовать Object.is Comparision? Или есть другое решение, чтобы проверить, получил ли я отрицательный или положительный ноль?

2 ответа

Решение

Хорошо, после еще одного исследования я нашел решение, использующее JSNI:

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

Как 1/-0 производит -Infinity в JavaScript этот работает.

Вы можете объявить новый метод, используя JSNI, который использует Object.is:

public static native boolean compareDoubles(Double a, Double b) /*-{
    return Object.is(a, b);
}-*/;
Другие вопросы по тегам