@Rienopely

А почему 0.1 + 0.1 + 0.1 — 0.3 будет очень большое число?

Если взять double в java будет 5.551115123125783E-17, а если float, то 0. В питоне float тоже чудо число выдает. Я понимаю что вопрос совсем нуба, но помогите пожалуйста.
  • Вопрос задан
  • 1002 просмотра
Решения вопроса 2
Drakonn
@Drakonn
Инженер-программист
в конце числа 5.551115123125783E-17 есть Е-17, это показывает порядок чилса, т.е. такое число равно 0.000000000000055111512, так происходит потому, что типом float и double невозможно точно представить какое либл число без погрешности, к примеру то же 0.1 будет представлено, как 0.10000000003
Ответ написан
Комментировать
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Перед сложением/вычитанием умножаете всё на 10 и потом всё в конце делите на 10

a = 0.1
b = 0.1
c = 0.1
d = 0.3
puts ((a*10)+(b*10)+(c*10)+(d*10))/10 #0.6
puts ((a*10)+(b*10)+(c*10)-(d*10))/10 #0.0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ответ написан
Комментировать
@Taksist410
это ошибка округления
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы