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

What is difference between {:.4e} and {:2.4} in Python scientific notation

对于我试图用科学记数法表示的数字,我不太明白下面两个打印语句之间的区别是什么。我认为最下面的应该为打印结果留出 2 个空格,并将小数位移动 4 次,但我得到的结果并不能证实这种理解。至于第一个,4e 是什么意思?

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

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

非常感谢所有帮助。

在第一个例子中,4e表示科学记数法小数点后4位。你可以通过

来了解这一点
>>> 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 表示 4 位有效数字。而2表示将整个数据放入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

你可以了解更多from the python documentation on format

如果要生成浮点数,则必须指定浮点数类型:

>>> '{:2.4f}'.format(3454356.7)
'3454356.7000'

否则,如果您不指定类型,Python 将选择 g 作为类型,其精度将表示基于其 significant figures 的精度,数字 之前和之后的小数点。由于您的精度为 4,它只会显示 4 位数字,回落到科学记数法,因此不会添加错误的精度。

The precision is a decimal number indicating how many digits should be displayed after the decimal point for a floating point value formatted with 'f' and 'F', or before and after the decimal point for a floating point value formatted with 'g' or 'G'. For non-number types the field indicates the maximum field size - in other words, how many characters will be used from the field content. The precision is not allowed for integer values.

(source,强调我的)

最后,注意宽度(上面格式字符串中的2)包括全宽,包括小数点前的数字,小数点后的数字,小数点本身,科学记数法的组成部分。以上结果的宽度为 12,因此在这种情况下,格式字符串的宽度将被忽略。