【问题标题】:Passing precision as parameter to python format将精度作为参数传递给 python 格式
【发布时间】:2015-04-19 20:38:47
【问题描述】:

我想以精度为参数格式化一个浮点数

"{0:,.2f}$".format(1000 + 1/float(3))
'1,000.33$'

如何将小数位数 (.2f) 作为参数传递?

仅供参考,我知道我可以使用round(n,precision),但是当precision=0 它打印0.0 这不是我想要的。我也可以像"{0:,." + str(precision) + "2f}f".format(n) 一样连接,但你知道......

【问题讨论】:

    标签: python string python-2.7 string-formatting


    【解决方案1】:

    您可以嵌套格式字段以动态指定精度:

    >>> "{1:,.{0}f}$".format(2, 1000 + 1/float(3))
    '1,000.33$'
    >>>
    

    来自docs

    format_spec 字段还可以包含嵌套的替换字段 它。这些嵌套的替换字段只能包含一个字段名; 不允许使用转换标志和格式规范。这 format_spec 中的替换字段在 format_spec 字符串被解释。这允许格式化 动态指定的值。

    【讨论】:

    • 谢谢。所以基本上解决方案是将'.' + str(precision) + 'f' 的串联从实际格式移动到参数?这感觉不对。
    • 好的。明白了,"{1:,.{0}f}$".format(2, 1000 + 1/float(3))
    • 是的,没错。您的问题说如何将.2f 放入字符串中,所以我最初就这样做了。我更新了我对你真正想要的答案。
    • 我建议将答案中的“内部”一词加粗或用斜体书写,以便以某种方式突出显示,因为重要的是要注意首先替换最内部的字段。
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2019-03-02
    • 2012-02-03
    • 2011-08-18
    • 2021-12-29
    相关资源
    最近更新 更多