Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2017 11:22:32

lubocka
Зарегистрирован: 2017-06-11
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Неточность в расчетах

При сложении, умножении чисел с плавающей точкой расчет идет не точный, как и в Екселе

например :

 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


расчетов у меня в программе будет много, и не хочется после каждого расчета делать округление
есть ли возможность упростить?

Отредактировано lubocka (Ноя. 5, 2017 11:24:43)

Офлайн

#2 Ноя. 5, 2017 13:10:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2835
Репутация: +  186  -
Профиль   Отправить e-mail  

Неточность в расчетах

Для расчётов с заданной точностью нужно использовать тип decimal из одноимённого модуля.
http://www.ilnurgi1.ru/docs/python/modules/decimal.html



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Ноя. 5, 2017 13:11:48)

Офлайн

#3 Ноя. 5, 2017 17:16:50

lubocka
Зарегистрирован: 2017-06-11
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Неточность в расчетах

это немножко не то что я хотела.

использовать при каждом вычислений decimal также не удобно.

Офлайн

#4 Ноя. 5, 2017 19:01:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Неточность в расчетах

lubocka
и не хочется после каждого расчета делать округление
вы наверное хотите чтобы знаков было меньше при печати? Просто правильно указывайте формат вывода
 >>> print("%9.3g и %9.3g" % (41.49999999,41.49999999))
     41.5 и      41.5



Офлайн

#5 Ноя. 5, 2017 20:26:14

lubocka
Зарегистрирован: 2017-06-11
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Неточность в расчетах

нет, это снова не то.
В Екселе, есть опция в настройках “точность как на экране”
подобную опцию и хочу, ну нет так нет

Офлайн

#6 Ноя. 5, 2017 20:36:01

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2835
Репутация: +  186  -
Профиль   Отправить e-mail  

Неточность в расчетах

> использовать при каждом вычислений decimal также не удобно.

Нравится это или нет, но любые финансовые расчёты нужно производить с типом данных decimal. Иначе остатки не сойдутся.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Ноя. 5, 2017 20:36:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version