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

2024-04-25 22:49:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在C#中,我可以做(#。#######################。 1.2->1.2 1.234->1.234 1.23456789->1.2345

Afaik,在python中,只有c样式的%.4f,如果需要,它将始终打印到4个小数点,并在末尾填充0。 我不想要那些0

有什么建议能让我达到我所需要的最干净的方法?在

一个可能的解决办法是先打印出来,然后自己修改结尾0,但希望找到更聪明的方法。在


Tags: 方法结尾样式建议末尾小数点解决办法afaik
3条回答
>>>x = 36.2215405525
>>>from decimal import Decimal
>>>print Decimal(str(x)).quantize(Decimal('0.0001'))
36.2215

大数字的格式会有所不同,但是,对于您提到的那些:

>>> for x in (1.2, 1.234, 1.23456789):
...   print '%.4g' % x
... 
1.2
1.234
1.235

这是@Daniel的答案中提到的更现代的{0:0g}.format方法的传统等价物(适用于python3.whatever和2.6或更高版本)。例如,如果您使用的是googleappengine(目前仅支持python2.5),则需要使用%-运算符方法来格式化(不能使用2.6或更好的.format方法)。在

看起来您可以将“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位数)。如果你只想让有效数字在右边,你必须做一些有趣的事情,比如

^{pr2}$

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

相关问题 更多 >