在Python中将浮点数向上取整至$.01

5 投票
3 回答
4006 浏览
提问于 2025-04-17 09:49

我正在做一个程序,这个程序把数字存储为浮点数,最后会把它们写入文件作为货币。现在我用的是round()函数,把数字四舍五入到小数点后两位,但业务部门希望我无论第三位小数是什么,都能向上进位到下一个分。例如:

x = 39.142

在这个例子中,我想把x进位到39.15。很明显,当我使用round函数时,得到的是39.14...

>>> round(x, 2)
    39.14

有没有办法让我总是向上进位到下一个分呢?我还要提一下,我处理的这些数字是以货币的形式打印到文件里的。

3 个回答

0

虽然我来得有点晚,但如果有人想要一个简单的Python 3的一行代码:

import math

x_rounded = math.ceil(x*100) / 100
1

如果你想把金额写成美分,可以用这个方法:int(x*100+.5)。这样可以把浮动的小数形式的美元转换成整数形式的美分。

15

使用decimal模块

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

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

小数有很多种舍入的方式。具体的选项和它们的含义可以在这里找到。

撰写回答