首页 > 解决方案 > 为什么 0.58*100=0.5799999999... 发生在 python 中

问题描述

我是大学生。我正在学习python并创作一些作品。最近,我发现了以下差异。

>>>> 0.57*100"

“56.99999999999999”

>>>> 0.58*100"

“57.99999999999999”

>>>> 0.56*100"

“56.00000000000001”

>>>> 0.55*100"

“55.00000000000001”

上面的代码在 python 解释器中执行。我的 python 版本是 3.7.7。我的python是Cpython。

我将任何其他两个小数点数字相乘,例如 0.54 ,0.19, 0.99 等...

但是当乘以 100 时,只有 0.58 和 0.57 会变成 57.999999... 或 56.999999999...。

当乘以 100 时,只有 0.56*100 和 0.55*100 变成 56.00000000000001 或 55.00000000000001。

0.19、0.99 等小数点后两位数全部变为正确值:19.0、99.0。

这些差异只在我的电脑上造成?还是每台电脑?如果每个 python 环境都有这些差异,为什么会发生?

标签: pythonpython-3.xmultiplicationcpython

解决方案


这些“错误”发生在 python 和几种编程语言上。事实上,你不能将浮点数与整数相乘,因为会出现这个错误。

您可以做的是创建一个变量“epsilon”,其值位于您想要的结果的小数点后面,例如 0.001。然后你只需要将结果与这个 var 进行比较,你只需要保留你想要的数字。(抱歉英语不好,如果你不明白,请告诉我)。


推荐阅读