Python如何在百位后截断?
我想把一个输入,比如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的结果……不太确定这是不是你所说的“截断”。