由于您正在谈论尾随零,这是一个关于将数字表示为字符串的问题,您可以使用
>>> "%.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)
i = ('%.2f' %i)
似乎可以解决问题。我将使用其他数字进行测试以验证其是否有效。 - Seth Koberg