【问题标题】:What is difference between {:.4e} and {:2.4} in Python scientific notationPython科学记数法中的{:.4e}和{:2.4}有什么区别
【发布时间】:2015-04-08 11:52:28
【问题描述】:

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

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

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

非常感谢所有帮助。

【问题讨论】:

  • 请注意2'{:2.4}' 中的字段宽度,因为数据不能容纳在两个字符中而被忽略。
  • 如果它的大小明显更大,比如'{:10.4}',Python 会根据需要使用前缀空格来实现该字符数 (' 3.454e+06')。插入0 会将前缀字符更改为0'{:012.4}'.format(3454356.7) 给出'0003.454e+06'

标签: python string format scientific-notation


【解决方案1】:

在第一个示例中,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】:

    如果你想产生一个浮点数,你必须指定浮点数类型:

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

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

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

    source,强调我的)

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

    【讨论】:

    • 谢谢大家。我现在知道了。谢谢。
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2019-04-15
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多