Форум сайта python.su
0
В общем-то, проблема эта у меня возникала не только в 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
Что может быть не так?
Офлайн
88
Проблема из-за приближенного представления процессором рациональных чисел.
principal = 1000 rate = 0.05 numyears = 5 year = 1 while year <= numyears: principal = round(principal * (1 + rate), 8) print(year, principal) year += 1
Офлайн
0
ShamanА на всех ли процессорах есть такая проблема?
Проблема из-за приближенного представления процессором рациональных чисел.
Офлайн
88
На всех цифровых. Чтобы очертить рамки возможностей создан стандарт https://ru.wikipedia.org/wiki/IEEE_754-2008
Офлайн