当您谈论尾随零时,这是关于表示为字符串的问题,您可以使用
>>> "%.2f" % round(2606.89579999999, 2)
'2606.90'
或者使用具有format
功能的现代风格:
>>> '{:.2f}'.format(round(2606.89579999999, 2))
'2606.90'
replace
并用或删除点translate
(_
指python控制台中先前命令的结果):
>>> _.translate(None, '.')
'260690'
请注意,此处不需要舍入,因为.2f
格式适用相同的舍入:
>>> "%.2f" % 2606.89579999999
'2606.90'
但是正如您提到的 excel,您可能会选择滚动自己的舍入函数或使用decimal,因为float.round
浮点表示可能会导致奇怪的结果:
>>> round(2.675, 2)
2.67
>>> round(2606.89579999999, 2)
2606.89
使用小数使用quantize:
>>> from decimal import *
>>> x = Decimal('2606.8950000000001')
# Decimal('2606.8950000000001')
>>> '{}'.format(x.quantize(Decimal('.01'), rounding=ROUND_HALF_EVEN))
'2606.90'
对于您的原始任务,这将变为:
>>> x = Decimal('2606.8950000000001')
>>> int((x*100).quantize(1, rounding=ROUND_HALF_EVEN))
260690
奇怪的四舍五入的原因是Decimal
:
>>> x = Decimal(2606.8950000000001)
# Decimal('2606.89499999999998181010596454143524169921875') # internal float repr