【问题标题】:New Python print format statement return different results. Why?新的 Python 打印格式语句返回不同的结果。为什么?
【发布时间】:2014-08-19 17:08:34
【问题描述】:

Python 2.7.5+

新样式 '{X.Yf}'.format(num) 似乎不像旧样式 '%X.Yf'%(num)。谁能解释一下?

>>> '%8.3f' % (0.98567)
'   0.986'
>>> '%8.3f' % (1.98567)
'   1.986'

>>> '{num:8.3}'.format(num=0.98567)
'   0.986'
>>> '{num:8.3}'.format(num=1.98567)
'    1.99'

注意旧样式如何显示小数点后 3 位,但新样式有时会打印 2,有时会打印 3。我犯了一些愚蠢的错误吗?

【问题讨论】:

    标签: python string python-2.7 string-formatting


    【解决方案1】:

    也使用新格式的f

    >>> '{num:8.3f}'.format(num=1.98567)
    '   1.986'
    

    如果没有格式类型,默认为g,精度被解释为位数(不包括小数点前的0)。如果小数点前有1,则其后仅显示 2 位数字。

    如果您使用 g 而不是 f,您会看到与旧字符串格式相同的输出:

    >>> '%8.3g' % (1.98567)
    '    1.99'
    

    【讨论】:

    • 这个术语是有效数字。
    • @JackAidley 谢谢!我坚持使用format documentation 中使用的术语。
    猜你喜欢
    • 2023-01-03
    • 1970-01-01
    • 2012-05-02
    • 2014-02-12
    • 2013-06-13
    相关资源
    最近更新 更多