Python如何在百位后截断?

13 投票
8 回答
41575 浏览
提问于 2025-04-15 12:07

我想把一个输入,比如315.15321531321,截断到小数点后两位,也就是只保留到百分位,这样它就变成315.15了。

我该怎么做呢?

8 个回答

6

如果你在处理货币金额,我强烈建议你使用Python的decimal类。这个类能帮助你更准确地处理小数,避免一些常见的错误。你可以在这里了解更多:http://docs.python.org/library/decimal.html

9

看起来使用 print "%.2f" 这个方式也会进行四舍五入。这里有一段 Python 代码,它可以进行四舍五入和截断。

num = 315.15627
print("rounded   = %.2f" % num)
print("truncated = %.2f" % (int(num*100)/float(100)))

print(f'rounded   = {num:.2f}')
print(f'truncated = {int(num*100)/float(100):.2f}')

**Outputs**
rounded   = 315.16
truncated = 315.15
rounded   = 315.16
truncated = 315.15
14

在Python 2.x中,字符串格式化可以帮你解决这个问题:

>>> print '%.2f' % 315.15321531321
315.15

这样做会把字符串的表示限制为只有两位小数。需要注意的是,如果你使用 round(315.153215, 2),你会得到另一个浮点数值,这个值可能不太准确(或者说过于准确,这要看你怎么理解):

>>> round(315.15321531321, 2)
315.14999999999998

从技术上讲,round() 是正确的,但它并没有像你要求的那样把结果“截断”到 315.15。另外,如果你把像315.157这样的数值进行四舍五入,它会得到更接近315.16的结果……不太确定这是不是你所说的“截断”。

撰写回答