Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему так происходит?

Андрей Харламов Мастер (2462), закрыт 8 месяцев назад

почему вывод нет 0.9?
Лучший ответ
Андрей Высший разум (425828) 1 год назад
Потому, что вещественное число - ВСЕГДА приближённое значение, хранящееся в компьютере с погрешностью. Мантисса вещественного числа - двоичная рациональная дробь конечной длины (53 бита). Но большинство десятичных дробей невозможно точно записать конечной двоичной дробью.

Уменьшением погрешностей при вычислениях с плавающей запятой занимается изучаемая в технических ВУЗах вычислительная математика.
Андрей ХарламовМастер (2462) 1 год назад
спасибо
Остальные ответы
Борат Сагдиев Ученик (124) 1 год назад
питон для гоев) с++ форева
Vitness Просветленный (35173) 1 год назад
Вещественные числа не могут быть точными. https://0.30000000000000004.com/
Аглая Шниц Искусственный Интеллект (138196) 1 год назад
можно сильно не мудрить с математическими операциями. уже после первой строки в переменной a хранится не совсем 17.9:
 a = float("17.9") 
print (f"{a:.20f}")
питон богатый, в нем есть много всяких штук, в частности, представление вещественных чисел дробями - там рациональные числа будут точными*), потому что хранятся в виде пары целых чисел делимое/делитель
 from fractions import Fraction 
print(Fraction("17.9"))

*) но, понятное дело, опять-таки не все.
Похожие вопросы