Найти - Пользователи
Полная версия: Неточность в расчетах
Начало » Python для новичков » Неточность в расчетах
1
lubocka
При сложении, умножении чисел с плавающей точкой расчет идет не точный, как и в Екселе

например :
 a = 25
b = 3.3
while a < 40:
    a += b
    print('%s и %s ' %(a,b))
результат будет такой:
28.3 и 3.3
31.6 и 3.3
34.9 и 3.3
38.199999999999996 и 3.3
41.49999999999999 и 3.3

можно поставить так, тогда результат будет верный:
 a = 25
b = 3.3
while a < 40:
    a += b
    a = round(a,4)
    print('%s и %s ' %(a,b))
результат :
28.3 и 3.3
31.6 и 3.3
34.9 и 3.3
38.2 и 3.3
41.5 и 3.3


расчетов у меня в программе будет много, и не хочется после каждого расчета делать округление
есть ли возможность упростить?
Rodegast
Для расчётов с заданной точностью нужно использовать тип decimal из одноимённого модуля.
http://www.ilnurgi1.ru/docs/python/modules/decimal.html
lubocka
это немножко не то что я хотела.

использовать при каждом вычислений decimal также не удобно.
doza_and
lubocka
и не хочется после каждого расчета делать округление
вы наверное хотите чтобы знаков было меньше при печати? Просто правильно указывайте формат вывода
 >>> print("%9.3g и %9.3g" % (41.49999999,41.49999999))
     41.5 и      41.5
lubocka
нет, это снова не то.
В Екселе, есть опция в настройках “точность как на экране”
подобную опцию и хочу, ну нет так нет
Rodegast
> использовать при каждом вычислений decimal также не удобно.

Нравится это или нет, но любые финансовые расчёты нужно производить с типом данных decimal. Иначе остатки не сойдутся.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB