【发布时间】:2020-08-24 13:59:49
【问题描述】:
有人可以向我解释一下吗?
我正在编写一个 def(程序)来将文本转换为数字,并想确保它是否只是整数,表示是整数,如果是浮点数,则浮点数。如果是混合,则默认为浮动。在总和上测试它产生了一些有趣的东西。当我测试更多时,它仍然变得陌生。
如果它总是另一种方式,也许我可以解决,但据我所知,它是不一致的。我听说这是一个问题,并且有一些库可以解决所需的状态(十进制类型),但是为什么会发生这种情况呢?这种事情让我很担心。我可以做?
以下示例从“是的,这很有意义”到“嗯?”到“怎么在???”。这些发生在非常接近的数字范围内。我的意思是当它是 5.8 与 6.8 时,你会在结果中得到那个增量。重量???
TIA 提供任何见解。我敢肯定这是某个地方的旧消息 :)
所有都在提示符下运行,尽管在代码中是相同的。使用 Python 3.8.2 一些例子:
-2 + 4.5 => 2.5 “是的,这是有道理的”
-6.8 + 8 => 1.2000000000000002 “嗯?”
-2+3.8 => 1.7999999999999998“怎么在???”
-5.8+8 => 2.2
-7.8+8 => 0.20000000000000018
-8.8+8 => -0.8000000000000007
-4.8+8 => 3.2
-4-3.8+8 => 0.20000000000000018
-4+3.8 => -0.20000000000000018
-3+3.8 => 0.7999999999999998
-1+3.8 => 2.8
【问题讨论】:
-
这能回答你的问题吗? Is floating point math broken?
标签: types floating-point int