假设我有8.8333333333333339,我想将其转换为8.84。如何在Python中完成此操作?
8.8333333333333339
8.84
round(8.8333333333333339, 2)给与8.83不8.84。我是Python或一般编程的新手。
round(8.8333333333333339, 2)
8.83
我不想将其打印为字符串,结果将被进一步使用。有关此问题的更多信息,请查看 Tim Wilson的Python编程技巧:贷款和付款计算器 。
8.833333333339(或8.833333333333334的结果106.00/12)正确舍入为小数点后两位8.83。数学上,这听起来像您想要的是天花板功能。Pythonmath模块中的一个名为ceil:
8.833333333339
8.833333333333334
106.00/12
math
ceil
import math v = 8.8333333333333339 print(math.ceil(v*100)/100) # -> 8.84
地板和天花板功能通常分别将实数映射到最大的前一个或最小的后整数,该整数具有十进制小数位-因此将它们用于2个小数位,首先将数字乘以10 2(或100)即可将小数位数移位点,然后除以它以进行补偿。
如果math由于某种原因不想使用该模块,则可以使用我刚刚编写的这个(经过最低测试的)实现:
def ceiling(x): n = int(x) return n if n-1 < x <= n else n+1
贷款和付款计算器问题](http://openbookproject.net/pybiblio/practice/wilson/loan.php)_
从样本输出中可以看出,他们对每月付款进行了 四舍五入 ,这就是许多人所说的上限功能的效果。这意味着每个月略多于1 / 12的总量被支付。这样一来,末期付款就比平时少了一点,剩下的未付余额仅为8.76。
8.76
使用正常的四舍五入产生每月付款8.83和稍高的最终付款同样有效8.87。但是,在现实世界中,人们通常不希望增加自己的付款,因此对每笔付款进行四舍五入是常见的做法- 还会更快地将钱退还给贷方。
8.87