Chr*_*ton 0 python floating-point rational-number python-3.x
如果我在Python 2.7.1 shell或3.3.2 shell中键入以下内容:
a = 0.1
b = 0.1
(a + b) == 0.2
Run Code Online (Sandbox Code Playgroud)
它返回值true.从stackoverflow和麻省理工学院的这个视频,我觉得这会回来false,因为当试图在计算机中准确表示0.1时会出现小错误.(毕竟不是二进制吗?)所以我猜Python必须是a)进行非浮点算术或b)在进行相等性测试之前进行舍入.
它是哪个版本以及哪些版本的Python具有此行为?
他们都不是.这是"运气".浮点表示+算术为您选择的数字提供相同的值.
>>> (0.1 + 0.1) == 0.2
True
>>> (0.1 + 0.2) == 0.3
False
Run Code Online (Sandbox Code Playgroud)
您可以使用该decimal模块向您显示:
>>> import decimal
>>> decimal.getcontext().prec = 60
>>> decimal.Decimal(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> decimal.Decimal(0.2)
Decimal('0.200000000000000011102230246251565404236316680908203125')
>>> decimal.Decimal(0.1) + decimal.Decimal(0.1)
Decimal('0.2000000000000000111022302462515654042363166809082031250')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |