在Python中,当我将10增加到负六次幂时:
>>> 10**-6
1e-06
Run Code Online (Sandbox Code Playgroud)
它将显示1e-06.
在翻译中显示10** - 6和0.000001之间是否存在显着差异?或者只是表示/格式化差异.
要测试两个浮点值是否完全相等,只需使用==:
>>> 0.000001 == 10**-6
True
Run Code Online (Sandbox Code Playgroud)
您可能会将值与表示混淆.当在解释器中回显时,Python 使用函数格式化a ,并通过使用符号格式化来表示值; 当指数变得足够大时,这种表示法切换到使用科学表示(格式化).实际上是一样的.floatrepr()gerepr()format(value, '.16g')
您可以手动格式化数字:
>>> format(10**-6, '.53f')
'0.00000099999999999999995474811182588625868561393872369'
>>> format(0.000001, '.53f')
'0.00000099999999999999995474811182588625868561393872369'
Run Code Online (Sandbox Code Playgroud)
其中.53f格式化最多53个十进制数的值,一个基于浮点值可以编码的限制的半任意数.
事实上,两个值完全相同.这不是一个给定的; 浮点数计算很容易引入小错误,因为浮点数是二进制分数的近似值.