Форум сайта python.su
При сложении, умножении чисел с плавающей точкой расчет идет не точный, как и в Екселе
например :
a = 25 b = 3.3 while a < 40: a += b print('%s и %s ' %(a,b))
a = 25 b = 3.3 while a < 40: a += b a = round(a,4) print('%s и %s ' %(a,b))
Отредактировано lubocka (Ноя. 5, 2017 11:24:43)
Офлайн
Для расчётов с заданной точностью нужно использовать тип decimal из одноимённого модуля.
http://www.ilnurgi1.ru/docs/python/modules/decimal.html
Отредактировано Rodegast (Ноя. 5, 2017 13:11:48)
Офлайн
это немножко не то что я хотела.
использовать при каждом вычислений decimal также не удобно.
Офлайн
lubockaвы наверное хотите чтобы знаков было меньше при печати? Просто правильно указывайте формат вывода
и не хочется после каждого расчета делать округление
>>> print("%9.3g и %9.3g" % (41.49999999,41.49999999)) 41.5 и 41.5
Офлайн
нет, это снова не то.
В Екселе, есть опция в настройках “точность как на экране”
подобную опцию и хочу, ну нет так нет
Офлайн
> использовать при каждом вычислений decimal также не удобно.
Нравится это или нет, но любые финансовые расчёты нужно производить с типом данных decimal. Иначе остатки не сойдутся.
Отредактировано Rodegast (Ноя. 5, 2017 20:36:29)
Офлайн