| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > глюк с числами с плав. запятой |
| Автор: ZAVS 19.11.2004, 00:02 | ||||
| привет Всем вот кусок программы
а вот результат
кто может обяснить от чего это происходит (может в sun-е что то упустили)?? и как от этого избавиться???? |
| Автор: Domestic Cat 19.11.2004, 01:00 |
| Почитай кak флоат типы хранятся в памяти |
| Автор: cardinal 19.11.2004, 01:39 | ||||
округлить результаты или сделать так:
|
| Автор: Domestic Cat 19.11.2004, 03:50 | ||
чтобы еще больше понять насколько плохой язык Java(шутка), можно запустить такую прогу:
|
| Автор: ElectricalStorm 19.11.2004, 18:34 |
| тут при неявном касте присравнении if (a == (float)b) a = 1.29685632E9 b = 1.29685632E9 получается что они равны...;) |
| Автор: sergejzr 20.11.2004, 00:49 |
| Кстати в цитате видно, как ошибки распределяются |
| Автор: ZAVS 20.11.2004, 04:46 | ||
спасибо
а кроме этого есть какой-то универсальный метод который позволяет избежать неточностей |
| Автор: cardinal 20.11.2004, 04:49 |
| думаю, что все остальные способы сводятся к тому, что я уже описал или к офигительной потери эффективности... |
| Автор: Domestic Cat 20.11.2004, 04:54 | ||
| Ну если уж очень нузна такая точность, посмотри класс BigDecimal http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html Добавлено @ 04:57 Пример:
|
| Автор: Zandr 23.11.2004, 08:36 |
| Ага java.math.BigInteger - целые, java.math.BigDecimal - вещественные, неограниченной точности. Только расплата за это - скорость. |