【问题标题】:What is the difference between .2 and .2f format specifiers?.2 和 .2f 格式说明符有什么区别?
【发布时间】:2021-03-09 10:31:18
【问题描述】:

考虑以下sn-p:

for value in [1.123, 1.126, 1.12, 1.16, 1.1, 1.0, 12345.6789]:
    print(
        f'Testing {value:>12}',
        f'.2 {value:>17.2}',
        f'.2g {value:>16.2g}',
        f'.2f {value:>16.2f}',
        end='\n\n',
        sep='\n'
    )

代码显示{value:.2}{value:.2f}输出不同的结果。

输出:

Testing        1.123
.2               1.1
.2g              1.1
.2f             1.12

Testing        1.126
.2               1.1
.2g              1.1
.2f             1.13

Testing         1.12
.2               1.1
.2g              1.1
.2f             1.12

Testing         1.16
.2               1.2
.2g              1.2
.2f             1.16

Testing          1.1
.2               1.1
.2g              1.1
.2f             1.10

Testing          1.0
.2               1.0
.2g                1
.2f             1.00

Testing   12345.6789
.2           1.2e+04
.2g          1.2e+04
.2f         12345.68

.2f 说明符将数字转换为定点表示法。 我发现.2.2g 相似但不完全。

.2 说明符的预期行为是什么?

【问题讨论】:

  • .2f 表示您使用浮点数指定两位精度 f
  • @BijayRegmi 好的,但是.2 是做什么的?
  • @BijayRegmi 我认为这是我们已经知道的一点。
  • 您只使用了小数点 前 1 位数字。尝试更多位数的数字,差异会变得更加明显。即f"{43.58458:.2}"f"{43.58458:.2f}"

标签: python python-3.x f-string


【解决方案1】:

documentation 说:

类型:无
含义:对于浮点数,它与'g'相同,除了当使用定点表示法格式化结果时,它总是包含小数点后至少一位数强>。使用的精度与忠实表示给定值所需的一样大。

我读到的意思是,当没有给出后缀(例如f)时,样式g 用于浮点数,除了1.0:.2 之类的情况将包括.0(“至少一个数字小数点后"),而1.0:.2g 不会。

g 的描述包括指定

... 不重要的尾随零被删除。

【讨论】:

  • 我认为您正在做某事,但 f'{1.0:.2}'f'{1.0:.2g}' 输出不同的结果。查看问题编辑。
  • 好的。我在回答中提供了更多细节。
猜你喜欢
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2011-01-15
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
相关资源
最近更新 更多