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有些数字有和没有不同?
Python 中仅使用科学记数法表示浮点数;整数总是按原样表示。
Python 2.7 中如何表示浮点数取决于它是使用repr()(例如,直接在控制台中或作为集合的成员)还是str()(例如,使用print语句)表示。
用repr(),浮点数使用科学记数法表示的,如果它们或者小于0.0001(1e-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().