Formatting floats in Python without superfluous ze

2019-01-01 06:57发布

How to format a float so it does not containt the remaing zeros? In other words, I want the resulting string to be as short as possible..?

Like:

3 -> "3"
3. -> "3"
3.0 -> "3"
3.1 -> "3.1"
3.14 -> "3.14"
3.140 -> "3.14"

14条回答
伤终究还是伤i
2楼-- · 2019-01-01 07:59

If you can live with 3. and 3.0 appearing as "3.0", a very simple approach that right-strips zeros from float representations:

print("%s"%3.140)

(thanks @ellimilial for pointing out the exceptions)

查看更多
明月照影归
3楼-- · 2019-01-01 07:59

Use %g with big enough width, for example '%.99g'. It will print in fixed-point notation for any reasonably big number.

EDIT: it doesn't work

>>> '%.99g' % 0.0000001
'9.99999999999999954748111825886258685613938723690807819366455078125e-08'
查看更多
登录 后发表回答