Сумма двух float-чисел вычисляется не верно [дубликат]

299
01 октября 2017, 23:49

На данный вопрос уже ответили:

  • Вычисления на числах с плавающей точкой не работают 1 ответ

Объясните, пожалуйста, что со мной не так, или почему результат вычислений столь странный? Здесь же даже нечего отрубать(округлять), если бы мы допустим хотели показать (1/3).
На сколько понимаю: 11.4+5.7 = 11.0+5.0 + 1.1 = 17.1
Так в школе ещё объясняли...

public class Test{
    public static void main(String[] args) {    
        System.out.println(11.4f+5.7f);
    }
}

Output:

17.099998
Answer 1

Подобные ошибки связанны с внутренним двоичным (binary) представлением чисел. Подобно тому, как в десятичной системе нельзя точно представить результат деления 1/3, так и в двоичной системе невозможно точно представить 1/10.

Подробнее здесь

В двух словах, числа с плавающей точкой не подходят для арифметических вычислений. Если вы хотите иметь возможность выполнять арифметические действия над дробными числами, используйте класс BigDecimal

READ ALSO
Откуда появляется лишний размер формы?

Откуда появляется лишний размер формы?

Есть объект AnchorPaneВ свойствах установлено ширина и максимальная ширина 720

244
Android проблема с intent (String to File)

Android проблема с intent (String to File)

Нужно запустить интент, но не с url, а уже готовым файлом, но предоставленным в виде текста (torrent файл открыли через текстовый редактор и скопировали...

245
Замер View-элементов

Замер View-элементов

Пишу класс, который будет заполнять View-контейнер максимально возможным количеством указанных View-элементовПримерно так:

181
Как высчитать разницу времени?

Как высчитать разницу времени?

Есть два времени в String, например, 10:45(ожидаемое) и 10:30(текущее)Как определить количество минут до ожидаемого значения?

191