格式化浮点数而没有尾随零

问题描述 投票:173回答:16

如何格式化浮点数,使其不包含尾随零?换句话说,我希望结果字符串尽可能短。

例如:

3 -> "3"
3. -> "3"
3.0 -> "3"
3.1 -> "3.1"
3.14 -> "3.14"
3.140 -> "3.14"
python formatting floating-point pretty-print
16个回答
171
投票

我,我愿意('%f' % x).rstrip('0').rstrip('.')-保证定点格式,而不是科学计数法等。是的,它不像%g那样精巧而优雅,但是,它可以工作(而且我不知道如何强迫%g永远不要使用科学计数法;-)。


1
投票

0
投票

0
投票

-1
投票

-1
投票

-3
投票

-4
投票

139
投票

您可以使用%g实现此目的:

'%g'%(3.140)

或者,对于Python 2.6或更高版本:

'{0:g}'.format(3.140)

来自docs for formatformat原因(除其他因素外)

无关紧要的零[将]从有效位数中删除,并且如果有小数点也将被删除后面没有剩余数字。


12
投票

尝试最简单且可能最有效的方法呢?方法[[normalize()删除所有最右边的尾随零。

g

Python 2]中工作,并且在Python 3中工作。

-更新-

@ BobStein-VisiBone指出的唯一问题是,数字10、100、1000 ...将以指数表示。可以使用以下函数轻松解决此问题:

from decimal import Decimal print (Decimal('0.001000').normalize()) # Result: 0.001


11
投票
查看了几个类似问题的答案之后,这似乎是对我来说最好的解决方案:

7
投票
这里有一个对我有用的解决方案。它是[[PolyMesh

2
投票

2
投票

2
投票

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.