【问题标题】:Sig fig formatting display with variable sig figs带有变量 sig figs 的 Sig fig 格式显示
【发布时间】:2012-12-25 01:47:47
【问题描述】:

我正在尝试在字符串中显示 sig figs,我找到了 '{:.2f}'.format(x) 样式,只要我在代码中将 sig figs 的数量作为整数,它就可以很好地工作,但我似乎无法得到这个如果 sig 无花果的数量包含在变量中,则格式样式将起作用。 2 有效 sig=2 无效。我一直在尝试使用%.format 插入sig 像这样'{:.%if}'.format(x) %sig',但它不起作用。

我确信有一个非常简单优雅的解决方案,但我无法弄清楚。任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您能否向我们展示一些示例输入输出以使问题更清楚。
  • unutbu 的答案是正确的,可能是最好的。不过,您的尝试可能很容易正确:('{:.%if}'%sig).format(x)' 可能会起作用。

标签: python string python-2.7


【解决方案1】:

您实际上可以使用字符串格式替换来为格式字符串本身提供参数:

In [79]: '{:.{s}f}'.format(1.234, s=2)
Out[79]: '1.23'

In [80]: '{:.{s}f}'.format(1.234, s=3)
Out[80]: '1.234'

【讨论】:

  • 请注意:对于 python2.6,这需要是:'{0:.{s}f}'.format(1.234, s = 2)(也适用于更高版本的 python)。
  • 我在 python 中的版本兼容性以及在处理不同的编译器时不注意这些东西时得到了一点帮助:)。也就是说,很好的答案 (+1)
  • @unutbu 就是这样!效果很好。非常感谢。
【解决方案2】:

对于我们这些非常喜欢它的人,您也可以使用旧式字符串插值(% 格式)来做到这一点:

>>> "%.*f"%(2,1.2345)
'1.23'
>>> "%.*f"%(3,1.2345)
'1.234'

但如果您使用的是较新版本的 python (2.6+),您可能应该使用@unutbu 建议的表单

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-29
    • 2010-09-05
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2018-09-11
    相关资源
    最近更新 更多