python中是否有内置的自定义数字格式?

在C#中,我可以做(#.####),它在小数点后打印最多4位有效数字.

1.2 – > 1.2

1.234 – > 1.234

1.23456789 – > 1.2345

Afaik,在python中,只有c风格的%.4f,如果需要的话,它总是会打印到最后用0填充的4个小数点.
我不想要那些0.

对于实现我需要的最干净的方法有什么建议吗?

一种可能的解决方案是首先打印它并自己修剪结束0,但希望找到更聪明的方法.

最佳答案 看起来您可以使用“g”
format specifier作为.format()字符串函数(仅在python 2.6中可用):

>>> x = 1.2
>>> print "{0:0.4g}".format(x)
1.2
>>> x = 1.234565789
>>> print "{0:0.4g}".format(x)
1.235

这包括小数点前后的数字,这就是你得到1.235(舍入1.2345到4位数)的原因.如果你只想要右边的有效数字,你必须做一些有趣的事情

>>> x = 1.23456789
>>> # length of the number before the decimal
>>> left_sigdigs = len(str(x).partition(".")[0])
>>> format_string = "{0:0." + str(4 + left_sigdigs) + "g}"
>>> print format_string.format(x)
1.2346

请注意,它仍然是圆形的,与您的示例不同.

点赞