Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Java > Ошибка в Java VM!!!! |
Автор: BV 14.04.02, 13:17 |
Господа! В Microsoft Java VM есть досадная ошибка: .... double d = 0.5 + 0.59; if ( d == 1.09 ) .... // условие не выполняется .... Так вот, господа, НЕ РАВНО! Вообще это очень скверно, поскольку везде приходится "изощряться". Вопрос: кто еще сталкивался с этой проблемой и как с ней боролся? |
Автор: tatar_0x4E 22.04.02, 12:10 |
На SUN JDK 1.3.1 это равно 1.0899999999999999 Это не баг - это фича :D Если нужны точные значения используй BigDecimal, для этого он и создавался. java.math.BigDecimal x = new java.math.BigDecimal("0.5"); java.math.BigDecimal y = new java.math.BigDecimal("0.59"); System.out.println(x.add(y)); Ява не может представить Double абсолютно точно, это связано со внутренней структурой типа. Поэтому кстати в конструкторе BigDecimal не рекомендуется юзать дабл (хоть это и возможно), ты получишь ту же фигню. RTFM. |
Автор: BV 24.04.02, 18:49 |
Спасибо за ответ. В принципе конечно огорчительно, но радует то, что эта "фича" существует в различных реализациях ;o) У меня есть набор функций в С++, которые я экспортировал в Java для работы с double. Решение работает, но "червь сомнения" не давал покоя. Еще раз спасибо. |