我只是问到为什么python给出的值为3.3-1.1是2.1999999999999997。我想是因为3.3或1.1代表了基数2,不是吗?至少我的观点是对的,http://docs.python.org/2/tutorial/floatingpoint.html。但在这种情况下,3.3和1.1不能被精确地表示为二进制分数,所以答案大约不精确。但是,为什么python给出3.3 + 1.1 = 4.4,而3.3-1.1= 2.1999999999999997,为什么不给4.3999999999997实例呢?
发布于 2013-12-07 15:42:38
事实上,4.4也不是精确的。您只需要更精确地打印它就可以看到以下内容:
In [2]: '%.20f' % (3.3 + 1.1)
Out[2]: '4.40000000000000035527'发布于 2013-12-07 15:46:24
要查看二进制浮点数的确切值,请使用decimal模块。例如,
>>> import decimal
>>> decimal.Decimal(3.3 + 1.1)
Decimal('4.4000000000000003552713678800500929355621337890625')注意不对称:虽然大多数十进制浮点数不能精确地表示为二进制浮点数,但所有二进制浮点数都可以精确地表示为十进制浮点数。这“基本上是因为”0.1二进制精确为小数点0.5,但0.1小数点不能精确表示为(有限)二进制浮点数。
https://stackoverflow.com/questions/20443168
复制相似问题