8.833333333339
(или 8.833333333333334
результат 106.00/12
) правильно округленный до двух знаков после запятой 8.83
. Математически это звучит так, будто вам нужна функция потолка . Тот, что находится в math
модуле Python, называется ceil
:
import math
v = 8.8333333333333339
print(math.ceil(v*100)/100)
Соответственно, функции пола и потолка обычно сопоставляют действительное число с наибольшим предыдущим или наименьшим последующим целым числом, которое имеет нулевые десятичные разряды, поэтому, чтобы использовать их для двух десятичных разрядов, число сначала умножается на 10 2 (или 100) для сдвига десятичной дроби. точка, а затем делится на нее для компенсации.
Если вы math
по какой-то причине не хотите использовать модуль, вы можете использовать эту (минимально протестированную) реализацию, которую я только что написал:
def ceiling(x):
n = int(x)
return n if n-1 < x <= n else n+1
Из выходных данных образца видно, что они округлили ежемесячный платеж, что многие называют эффектом функции потолка. Это означает , что каждый месяц немного больше , чем 1 / 12 от общей суммы выплачиваются. Это сделало окончательный платеж немного меньше, чем обычно, оставив неоплаченный остаток в размере всего лишь 8.76
.
В равной степени было бы справедливо использовать обычное округление с получением ежемесячного платежа в размере 8.83
и немного большего окончательного платежа в размере 8.87
. Однако в реальном мире люди, как правило, не любят, когда их платежи увеличиваются, поэтому округление каждого платежа является обычной практикой - оно также быстрее возвращает деньги кредитору.