Python科学计数法中的{:.4e}和{:2.4}有什么区别?

4

我有点不理解下面两个打印语句在科学计数法中所表达的数字之间的区别。我认为底部的那个应该允许打印结果有2个空格,并将小数点向右移动4次,但我得到的结果不支持这种理解。至于第一个语句,4e代表什么?

>>> print('{:.4e}'.format(3454356.7))
3.4544e+06

>>> print('{:2.4}'.format(3454356.7))
3.454e+06

非常感谢您的帮助。


2
请注意,在'{:2.4}'中,字段宽度为2的部分被忽略了,因为数据无法适应两个字符。 - Mike DeSimone
1
如果它的大小显著更大,比如'{:10.4}',Python将会在需要时添加前缀空格以达到那个字符数(' 3.454e+06')。插入一个0将会把前缀字符改为0'{:012.4}'.format(3454356.7)将会得到'0003.454e+06' - Mike DeSimone
2个回答

5
在第一个例子中,4e 表示科学计数法下的四位小数。你可以通过执行以下操作了解此含义。
>>> print('{:.4e}'.format(3454356.7))
3.4544e+06
>>> print('{:.5e}'.format(3454356.7))
3.45436e+06
>>> print('{:.6e}'.format(3454356.7))
3.454357e+06

在第二个示例中,.4 表示四个有效数字。而 2 表示将整个数据适应两个字符。
>>> print('{:2.4}'.format(3454356.7))
3.454e+06
>>> print('{:2.5}'.format(3454356.7))
3.4544e+06
>>> print('{:2.6}'.format(3454356.7))
3.45436e+06

测试不同值的2

>>> print('-{:20.6}'.format(3454356.7))
-         3.45436e+06

您可以从 Python 文档中了解有关 format 的更多信息,请点击此处。


1
如果您想要生成一个浮点数,您需要指定浮点类型:
>>> '{:2.4f}'.format(3454356.7)
'3454356.7000'

否则,如果您不指定类型,Python将选择g作为类型,其精度将基于其有效数字,即小数点前后的数字。由于您有一个精度为4,它只会显示4个数字,并回退到科学计数法,以避免添加虚假精度。

精度是一个十进制数字,指示应在使用'f''F'格式化的浮点值之后显示多少位小数点,或者在使用'g''G'格式化的浮点值之前和之后显示多少位小数点。对于非数字类型,该字段指示最大字段大小-换句话说,将使用多少个字符从字段内容中使用。整数值不允许精度。

source,重点是我的)
最后,请注意宽度(上述格式字符串中的2)包括完整宽度,包括小数点前的数字、小数点后的数字、小数点本身和科学计数法的组成部分。
以上结果的宽度为12,因此在这种情况下,格式字符串的宽度被简单地忽略。

谢谢大家。我现在明白了。谢谢。 - user4513674

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接