Python 如何确定是否使用科学记数法表示一个数字?

use*_*641 2 python string floating-point repr python-2.7

以下是在 Python 控制台中输入的一些数字,以及结果表示:

>>> 1
1
>>> 1.234
1.234
>>> 1.234e5
123400.0
>>> 1.234e15
1234000000000000.0
>>> 1.234e25
1.234e+25
Run Code Online (Sandbox Code Playgroud)

...当打印相同的数字时会发生以下情况:

>>> print 1
1
>>> print 1.234
1.234
>>> print 1.234e5
123400.0
>>> print 1.234e15
1.234e+15  # different!
>>> print 1.234e25
1.234e+25
Run Code Online (Sandbox Code Playgroud)

Python 如何决定使用哪种表示?为什么print有些数字有和没有不同?

Zer*_*eus 5

Python 中仅使用科学记数法表示浮点数;整数总是按原样表示。

Python 2.7 中如何表示浮点数取决于它是使用repr()(例如,直接在控制台中或作为集合的成员)还是str()(例如,使用print语句)表示。

repr(),浮点数使用科学记数法表示的,如果它们或者小于0.00011e-4),或至少1e16

>>> 1e-4
0.0001
>>> 0.00009999
9.999e-05
>>> 1e16-2
9999999999999998.0
>>> 10000000000000000.0
1e+16
Run Code Online (Sandbox Code Playgroud)

str(),该上限大约为1e11

>>> print 1e11-1
99999999999.0
>>> print 100000000000.0
1e+11
Run Code Online (Sandbox Code Playgroud)

注意:在 Python 3 中,str()现在以与repr().