舍入在python中漂浮$ .01

时间:2012-01-08 21:20:00

标签: python floating-point currency rounding

我正在开发一个将数字存储为浮点数的程序,我最终将其作为货币写入文件。我目前正在使用round()函数将其舍入为2位小数,但业务领域希望我无论第三个小数是多少都要舍入到下一个小数。例如:

x = 39.142

在这种情况下,我试图让x向上舍入到39.15。显然,当我执行圆函数时,我得到39.14 ......

>>> round(x, 2)
    39.14

有没有办法可以随时到达下一分钱?我应该提一下,我正在处理的数字将作为货币打印到文件中。

2 个答案:

答案 0 :(得分:14)

使用decimal module

import decimal
D = decimal.Decimal
cent = D('0.01')

x = D('39.142')
print(x.quantize(cent,rounding=decimal.ROUND_UP))
# 39.15

小数有很多舍入选项。可以找到选项及其含义here

答案 1 :(得分:1)

如果你想用美分写,你可以使用int(x * 100 + .5)从浮动美元中获得美分整数。