当前位置: 首页 > 知识库问答 >
问题:

python 怪事 23300*0.7 = 16309.999999999998? 如何解决?

姬衡
2023-11-23

python 怪事 23300*0.7 = 16309.999999999998?

如何解决?

共有2个答案

江超英
2023-11-23

所有编程语言都会有这个问题,不局限于Python。

百度:python decimal

对于金额计算,还有另外一个方法是全部换成分。

越学博
2023-11-23

这是一个常见的浮点数计算问题。在计算机科学中,浮点数的计算往往会产生一些小数精度问题。

问题的原因在于,计算机内部使用二进制来表示小数,而有些十进制小数不能被精确地用二进制表示。这就导致了所谓的"浮点数误差"。

对于你的问题,如果你需要更精确的结果,可以使用 Python 的 decimal 模块。这个模块可以提供任意精度的十进制数。

下面是一个例子:

from decimal import Decimal# 将数字转换为十进制num = Decimal('23300')# 计算 num * 0.7result = num * Decimal('0.7')print(result)  # 输出:16310.0

这样就可以得到更精确的结果了。

 类似资料:
  • 新的Android gradle插件(0.7)似乎包括了对NDK的新支持,但在文档中几乎没有提到它(我找到的唯一参考是一个名为< code>ndkSanAngeles的测试)。 看起来gradle正在寻找NDK,我已经将其包含在PATH中。然而,构建项目失败 < li >哪里出错:任务执行失败':ogl tests:compileDefaultFlavorDebugNdk '。NDK未配置 如何在

  • 我从凯拉斯搬到了皮托克。我对搬到CUDA这件事很陌生。我花了好几个小时在网上冲浪,却什么都没找到?修复可能是一两行。如果有人知道如何解决这个问题,我会很感激的? 下面是我的代码,首先我将我的u-net模型定义为一个nn类。类似于以下代码的模块: 然后我像下面的代码一样运行我的unet。请注意,在定义模块时,我将其设置为cuda。我还将输入数据及其标签设置为cuda。 但是我得到了这个错误: Run

  • 0.7.11no release date orm [orm] [bug] ¶ 修复了List Instrumentation无法表示 [0:0] 正确,尤其是在使用时 insert(0, item) 关联代理。由于python集合中的一些奇怪之处,这个问题更可能出现在python 3而不是2中。 References: #2807 [orm] [bug] ¶ 当查询表单时修复了错误: query

  • 问题内容: 最近,我遇到了几种语言的错误/功能。我对它的产生有非常基本的了解(我想作一些详细的解释),但是当我想到多年来我必须犯下的所有错误时,问题是我如何确定“ 嘿,这可能会导致一个荒谬的错误,我最好使用“任意精度函数 ”,其他语言确实有此错误(以及那些没有的语言, 为什么 )。另外,为什么这样做没有0.1 + 0.7,而没有做到0.1 + 0.3,还有其他众所周知的例子吗? 的PHP 蟒蛇:

  • 问题内容: 我在包含XML的数据库中有很多行,并且试图编写Python脚本来计算特定节点属性的实例。 我的树看起来像: 如何使用Python访问XML中的属性“1”和“2”? 问题答案: 我建议ElementTree。相同的API还有其他兼容的实现,例如和在标准库本身中。但是,在这种情况下,他们主要添加的是更高的速度-编程的难易程度取决于定义的API 。 首先用 构建 的实例,例如使用函数,或者通

  • 问题内容: 最近,我遇到了几种语言的错误/功能。我对它的产生有非常基本的了解(我想作一些详细的解释),但是当我想到多年来我必须犯下的所有错误时,问题是我如何确定“ 嘿,这可能会导致一个荒谬的错误,我最好使用任意精度函数 “,其他语言确实有此错误(以及那些没有的语言, 为什么 )。另外,为什么这样做0.1 + 0.7,而不是0.1 + 0.3,是否还有其他众所周知的示例? 的PHP 蟒蛇: Java