Decimal

高精度的情况用Decimal


from decimal import Decimal

rate = 1.45
seconds = 3*60 + 42
cost = rate * seconds / 60
print(cost)
print(round(cost, 2)) 

# 5.364999999999999
# 5.36

rate = Decimal("1.45")
seconds = Decimal("222")  # 3*60 + 42
cost = rate * seconds / Decimal("60")
print(cost)
rounded = cost.quantize(Decimal("0.01"), rounding="ROUND_UP")
print(rounded)

# 5.365
# 5.37

rate = 0.05
seconds = 5 
cost = rate * seconds / 60
print(cost)
print(round(cost, 2)) 

# 0.004166666666666667
# 0.0

rate = Decimal("0.05")
seconds = Decimal('5')
cost = rate * seconds / Decimal("60")
print(cost)
rounded = cost.quantize(Decimal("0.01"), rounding="ROUND_UP")
print(rounded)

# 0.004166666666666666666666666667
# 0.01