繁体   English   中英

使用 F 字符串显示浮点数

[英]Displaying floats using F-string

我真的很好奇为什么将这个“f”添加到我要显示的数字的末尾时行为如此不同:

# CASE with f
float1 = 10.1444786

print(f"{float1:.4f}")
# print out: 10.1445

# CASE without f
print(f"{float1:.4}")
# print out: 10.14

为什么在第二个示例中只显示 2 个字符?

隐含的类型说明符是g ,如文档中所述感谢@Barmar添加带有此信息的评论

无:对于float ,这与“g”相同,除了当使用定点表示法格式化结果时,它始终包括小数点后至少一位。 使用的精度与忠实表示给定值所需的一样大。

对于Decimal ,这与 'g' 或 'G' 相同,具体取决于当前十进制上下文的 context.capitals 的值。

整体效果是匹配str()的 output 由其他格式修饰符更改。

一个实验:

for _ in range(10000):
    r = random.random() * random.randint(1, 10)
    assert f"{r:.6}" == f"{r:.6g}"

每次都有效

https://docs.python.org/3/library/string.html#formatstrings

一般格式。 对于给定的精度 p >= 1,这会将数字四舍五入为 p 个有效数字,然后根据其大小将结果格式化为定点格式或科学计数法。 精度 0 被视为等同于精度 1。

因此,在第二个示例中,您要求 4 个 sigfig,但在第一个示例中,您要求 4 位精度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM