python 2.7.12中的格式设置

python 2.7.12中的格式设置,python,python-2.7,formatting,Python,Python 2.7,Formatting,我是一名初级python程序员,我已经学习了print语句中的格式说明符。因此,%3f意味着浮点数的宽度应该是3。 但是,在下面的代码中,输出不是这样的 import math print "%3f"%(math.pi) 这段代码应该输出3.1,因为我们将宽度指定为3。 但输出为3.141593。 我的问题是: 1.仅指定宽度是否适用于整数而不适用于浮点数? 2.格式化浮点数时必须同时指定宽度和精度吗?我只需指定小数点后的部分,如下所示: >>> print "%.1f"%(

我是一名初级python程序员,我已经学习了print语句中的格式说明符。因此,%3f意味着浮点数的宽度应该是3。 但是,在下面的代码中,输出不是这样的

import math
print "%3f"%(math.pi)
这段代码应该输出3.1,因为我们将宽度指定为3。 但输出为3.141593。 我的问题是:

1.仅指定宽度是否适用于整数而不适用于浮点数?
2.格式化浮点数时必须同时指定宽度和精度吗?

我只需指定小数点后的部分,如下所示:

>>> print "%.1f"%(math.pi)  
3.1

我只需指定小数点后的部分,如下所示:

>>> print "%.1f"%(math.pi)  
3.1

仅指定宽度也适用于浮点数。问题是宽度也包括小数点。例如,做:

"%10f" % math.pi # '  3.141593'
如您所见,字符串长度为10个字符。这里要考虑的另一件事是,默认情况下,python将输出6个小数点,因此执行%3f与%3.6f相同

>>> "%3f" % math.pi
'3.141593'
>>> "%3.6f" % math.pi
'3.141593'
>>>
这就是为什么您没有得到预期的输出“3.1”。要实现这一点,并且了解前面的概念,您应该指定:

"%3.1f" % math.pi
或者只是:

"%.1f" % math.pi

仅指定宽度也适用于浮点数。问题是宽度也包括小数点。例如,做:

"%10f" % math.pi # '  3.141593'
如您所见,字符串长度为10个字符。这里要考虑的另一件事是,默认情况下,python将输出6个小数点,因此执行%3f与%3.6f相同

>>> "%3f" % math.pi
'3.141593'
>>> "%3.6f" % math.pi
'3.141593'
>>>
这就是为什么您没有得到预期的输出“3.1”。要实现这一点,并且了解前面的概念,您应该指定:

"%3.1f" % math.pi
或者只是:

"%.1f" % math.pi

您还应该尝试更好的.format方法。它在格式化时提供了更多的清晰度和功能。这就是你所需要的

'{:.1f}'.format(math.pi)
如果需要,还可以指定填充宽度,如

'{:6.1f}'.format(math.pi)

您可以在这里阅读更多内容

您还应该尝试更好的.format方法。它在格式化时提供了更多的清晰度和功能。这就是你所需要的

'{:.1f}'.format(math.pi)
如果需要,还可以指定填充宽度,如

'{:6.1f}'.format(math.pi)
你可以在这里读更多

%30.1%f中的第一个指定了字符串的长度/

>>> print "%30.1f" % x
                       99999.5
看看这个

>>> print "%.1f" % x
99999.5 
看到最后一个了吗?它已经四舍五入了。如果你不想四舍五入,那就用十进制代替浮点

import math
from decimal import *
getcontext().prec=6
value = Decimal('999.559987').quantize(Decimal('.01'), rounding=ROUND_DOWN)
print str(value)
print '%.2f' % 999.559987
输出:

999.55
999.56
%30.1%f中的第一个指定了字符串的长度/

>>> print "%30.1f" % x
                       99999.5
看看这个

>>> print "%.1f" % x
99999.5 
看到最后一个了吗?它已经四舍五入了。如果你不想四舍五入,那就用十进制代替浮点

import math
from decimal import *
getcontext().prec=6
value = Decimal('999.559987').quantize(Decimal('.01'), rounding=ROUND_DOWN)
print str(value)
print '%.2f' % 999.559987
输出:

999.55
999.56

%5.3f这里有两部分。一个是整数“5”部分,另一个是浮点部分“.3”。整数部分在打印数字之前打印空间数。浮点部分指定浮点后将打印多少个数字。前面的答案有很多例子。

%5.3f这里有两部分。一个是整数“5”部分,另一个是浮点部分“.3”。整数部分在打印数字之前打印空间数。浮点部分指定浮点后将打印多少个数字。前面的答案有很多例子。

你的答案似乎很中肯,但我有一个疑问。你怎么能猜到%3f和%3.6f是一样的?小数位数总是宽度的两倍吗?@explorer否,默认情况下总是6。如果您尝试%4f%math.pi,它仍然会输出6位小数,而不是8位。您的答案似乎很中肯,但我有一个疑问。您怎么能猜到%3f与%3.6f相同?是否总有两倍于宽度的小数位数?@explorer否,默认情况下总是6位。如果尝试%4f%math.pi,它仍将输出6位小数,而不是8位小数。