python中向上舍入浮动$0.01

python中向上舍入浮动$0.01,python,floating-point,currency,rounding,Python,Floating Point,Currency,Rounding,我正在开发一个程序,将数字存储为浮点数,最终将浮点数作为货币写入文件。我目前正在使用round()函数将其四舍五入到2位小数,但业务领域希望我将其四舍五入到下一个便士,无论第三位小数是多少。例如: x = 39.142 在这种情况下,我试图让x取整到39.15。显然,当我做圆函数时,我得到39.14 >>> round(x, 2) 39.14 有没有办法让我总能凑到下一个便士?我应该提到,我处理的数字是以货币形式打印到文件中的。使用: 小数有许多舍入选项。您可以找到

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

x = 39.142
在这种情况下,我试图让x取整到39.15。显然,当我做圆函数时,我得到39.14

>>> round(x, 2)
    39.14
有没有办法让我总能凑到下一个便士?我应该提到,我处理的数字是以货币形式打印到文件中的。

使用:


小数有许多舍入选项。您可以找到这些选项及其含义。

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

如果是货币,请不要使用浮动。这只是自找麻烦。当然,这是可以做到的,但这比它的价值要麻烦得多。@LanceCollins:你选择的答案大错特错。见我的评论。+1这应该是公认的答案。应该删除蒂姆的。
import decimal
D = decimal.Decimal
cent = D('0.01')

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