当你谈到尾随的零时,这是一个关于表示为字符串的问题,
你可以用>>> "%.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>>> 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