Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 13, 2016 22:59:24

Mishalka2010
Зарегистрирован: 2016-04-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при выводе десятичных дробей.

В общем-то, проблема эта у меня возникала не только в Python, но и в Pascal. Не знал, где спросить, поэтому решил обратиться сюда. После многочисленных операций у меня увеличиваются последние выводимые разряды.
Программа, к примеру:
principal = 1000;
rate = 0.05;
numyears = 5;
year = 1;
while year <= numyears:
principal = principal * (1 + rate);
print(year, principal);
year += 1;
А вывод такой:
1 1050.0
2 1102.5
3 1157.625
4 1215.5062500000001
5 1276.2815625000003
Что может быть не так?

Офлайн

#2 Апрель 13, 2016 23:13:23

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проблема при выводе десятичных дробей.

Проблема из-за приближенного представления процессором рациональных чисел.

principal = 1000
rate = 0.05
numyears = 5
year = 1
while year <= numyears:
    principal = round(principal * (1 + rate), 8)
    print(year, principal)
    year += 1

Офлайн

#3 Апрель 13, 2016 23:22:00

Mishalka2010
Зарегистрирован: 2016-04-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при выводе десятичных дробей.

Shaman
Проблема из-за приближенного представления процессором рациональных чисел.
А на всех ли процессорах есть такая проблема?

Офлайн

#4 Апрель 13, 2016 23:28:25

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проблема при выводе десятичных дробей.

На всех цифровых. Чтобы очертить рамки возможностей создан стандарт https://ru.wikipedia.org/wiki/IEEE_754-2008

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version