在python中显示小数范围内

时间:2011-12-06 04:02:32

标签: python

我正在阅读wrox Beginning Python一书。在第2章中,示例说明了

>>> print "$.03f" & 30.00123
$30.001

但是,这并不能解释命令的行为。当.3和.003等在shell中具有相同的行为时,为什么要使用.03?此外,它没有解释当我使用3

时会发生什么
>>> print "%.03f" % (2.34567891)
2.346
>>> print "%.003f" % (2.34567891)
2.346
>>> print "%.0003f" % (2.34567891)
2.346
>>> print "%.3f" % (2.34567891)
2.346
>>> print "%3f" % (2.34567891)
2.345679

我尝试搜索但无法获得结果,因为我不知道相关的关键字是什么。

3 个答案:

答案 0 :(得分:4)

0中的'%.03f'无效。这相当于'%.3f'

关于第二个问题,'%3f'做了什么,它只是指定整数的长度,就像在'%3s'中一样。如果你做得更久就会变得清晰:

>>> '%10f' % 2.3
'  2.300000'
>>> len(_)
10
>>>

答案 1 :(得分:1)

这是一项称为字符串格式字符串插值的功能。其文档可以找到here。它与C函数printf的格式字符串非常相似。

答案 2 :(得分:1)

我认为“%。3f”,“%。03f”和“%0.003f”之间没有任何区别,小数点后的数字由printf-family处理为数字,所以3 == 03 == 003.但是,“%。0f”将截断小数位。此外,“%。f”与“%f”不同。

但是“03”的表示在printf-family中并没有用,如果需要,它会在要打印的数字前面填零,

>>> print "%5d" % (123)
  123
>>> print "%05d" % (123)
00123
>>> print "%5d" % (123456)
123456
您示例中的“%3f”与我的“%5d”相同。它打印至少三个数字长的字符串。所以,

>>> print "%3f" % (2.34567891)
2.345679
>>> print "%3.f" % (2.34567891)
  2
>>> print "%3.1f" % (2.34567891)
2.3
>>> print "%3.2f" % (2.34567891)
2.35
>>> print "%3.3f" % (2.34567891)
2.346
>>> print "%30f" % (2.34567891)
                      2.345679
>>> print "%30.8f" % (2.34567891)
                    2.34567891
>>> print "%30.9f" % (2.34567891)
                   2.345678910

不要忘记格式字符串中是否省略了小数点,默认小数位为6。