Форум сайта python.su
Приветствую.
Вопрос общего плана.
абсолютный чайник, прошел 3 урока.
Решал разные задачки, столкнулся с тем, что питон не всегда считает до нормальных целых знаков.
Вот должно получаться ровно 2.5 а у него получается 2.499999999999637 какие-нибудь.
Почему так? откуда он это берет? и как этого избегать без особо сложных конструкций?
Потому что иногда эти “блохи” не только чреваты ошибками в принципе, но и считаются ошибкой в некоторых задачах.
Можно, казалось бы заранее указывать кол-во знаков, но не всегда можно заранее угадать, с какого знака он начнет лепить эти 9999
Спасибо.
ЗЫ Не думаю, что необходимы примеры - не верю, что никто не сталкивался. Но если надо, пришлю, когда снова столкнусь.
Офлайн
round(14.22222223, 2)
>> 14.22
Офлайн
Areostar
round(14.22222223, 2)
Отредактировано 7kozlov (Июль 4, 2022 18:05:30)
Офлайн
7kozlov
Хотелось бы универсальный способ.
7kozlovпродолжайте свои уроки, вам расскажут про типы
абсолютный чайник, прошел 3 урока.
Офлайн
7kozlovОн это берет у процессора, который именно так и считает. Плавающая арифметика приближенная.
Почему так? откуда он это берет?
7kozlovАвторы таких задач безграмотны, на них не надо обращать внимание.
но и считаются ошибкой в некоторых задачах.
7kozlovНикак. При выводе вы можете округлить числа (например форматы f, g, e ). Но внутри расчет ведется именно с такими числами.
и как этого избегать
Офлайн
Большое спасибо за ответы. Кое-что понял.
Для меня, как чайника, стало открытием, что процессоры оперируют такими “кривыми” числами даже в тех случаях, когда есть “прямые” - то есть ровные и почти “целые”. Это значит заранее допускать дополнительные погрешности (и их возможное накопление) даже тогда, когда можно (казалось бы чайнику) обойтись без них. Вот очень мне это странно и математически противоестественно даже ))
Еще раз спасибо.
Отредактировано 7kozlov (Июль 5, 2022 15:57:25)
Офлайн