double digit= 4.49;
double digitiz= (int) digit;
double ostatok = digitiz - digit;
результат компилятора
0.49000000000002
откуда берётся эта добавка 000000000002?
Дмитрий Ковтунов
20 уровень
Почему теряется точность при отнимании двух double
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий
25 апреля 2021, 14:42
Может не совсем по теме, но вот видео где объясняется внутреннее устройство float, возможно поможет лучше разобраться. Хоть там и не Java, но насколько я знаю реализация чисел с плавающей точкой идет на уровне железа, поэтому применимо ко всем языкам программирования.
P.S. Эта тема может показаться сложной для понимания и оттолкнуть, но надо просто понимать что числа с плавающей точкой так работают.
+1
Wladyslaw Java Developer Master
25 апреля 2021, 14:17
Из-за невозможности точного представления некоторых дробей в двоичной системе исчисления.
+1
Дмитрий Ковтунов
25 апреля 2021, 14:44
Спасибо за объяснение
0