在python 2.7.12中格式化

时间:2017-06-16 07:14:50

标签: python python-2.7 formatting

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

import math
print "%3f"%(math.pi)

此代码应输出3.1,因为我们将宽度指定为3。 但输出是3.141593。 我的问题:

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

5 个答案:

答案 0 :(得分:3)

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

"%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

答案 1 :(得分:1)

我只需指定小数点后面的部分:

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

答案 2 :(得分:1)

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

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

如果需要,您也可以轻松指定填充宽度,

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

您可以在此处阅读更多内容https://pyformat.info/

答案 3 :(得分:1)

%30.1%f

>>> print "%30.1f" % x 99999.5 中的第一个指定了字符串/

的长度
>>> print "%.1f" % x
99999.5 

看看这个!

decimal

看到最后一个?它完善了它。如果您不想完善,请使用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

输出:

SELECT woh.*
FROM workorderhistory woh
join (select max(operationtime) as operationtime , workorderid 
      from workorderhistory 
      where operation = 'CLOSE' group by workorderid 
     ) woh2 
on woh.workorderid = woh2.workorderid
where woh.operationtime > woh2.operationtime
   and operation = 'REQ_CONVER'

答案 4 :(得分:0)

%5.3f这是两部分。一个是integer '5' part,另一个是floating part '.3'。整数部分在打印数字之前打印space的数量。浮动部分指定浮点后打印的数量。并且有很多例子以前的答案。