python - 为什么 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 环境都有这些差异,为什么会发生?
解决方案
这些“错误”发生在 python 和几种编程语言上。事实上,你不能将浮点数与整数相乘,因为会出现这个错误。
您可以做的是创建一个变量“epsilon”,其值位于您想要的结果的小数点后面,例如 0.001。然后你只需要将结果与这个 var 进行比较,你只需要保留你想要的数字。(抱歉英语不好,如果你不明白,请告诉我)。
推荐阅读
- ssh - 使用 Remmina 打开 SSH 隧道以进行 VNC 连接时卡住
- coldfusion - 在包含 HTML 标签的表达式中使用 ColdFusion 中的 Evaluate 函数
- json - 你如何让 json 中的列表指向相同的值?
- html - 如何处理 aria-label 中的空格?
- c# - 如何在 C# 中从 SQL Server 数据库填充数据网格视图
- sql-server - 非聚集索引 - 几乎相同需求的一个或两个索引(两个表之间的连接)?
- c# - 我如何计算每个中具有不同代码的票
- javascript - 聚合物 2:组合来自不同地点的海关标签
- python - 从 Python 中的 dict 中解析命令行
- google-bigquery - 在 BigQuery 中转换数组中的值