在谈论尾随零时,这是一个关于字符串表示的问题,您可以使用
>>> "%.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一样,您可能会选择滚动自己的舍入函数,或使用小数,因为
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)