为什么 0.1 + 0.1 == 0.2?

2024-01-08

这是关于Java的。据我了解,由于二进制表示形式,Java 无法完美表示 0.1。这使得

0.1 + 0.1 + 0.1 == 0.3

错误的。然而,为什么

0.1 + 0.1 == 0.2

给出真实的?


由于二进制表示形式,0.1 无法用 Java 完美表示。这使得

0.1 + 0.1 + 0.1 == 0.3

false.

这并不是等式错误的全部原因,尽管它是其中的一部分。0.3也不完全是 3/10。恰巧的是0.2正好是两倍0.1(虽然它们分别不是 2/10 和 1/10),并且添加0.1to 本身产生的值也是您键入常量时得到的值0.2。另一方面,操作后得到的整体近似值0.1 + 0.1 + 0.1与近似分离略有不同0.3从 3/10 开始。

如果我们使用具有 5 位有效数字的小数,您可能会惊讶于 1 / 3 * 3 == 1 不成立(1 / 3 将计算为 0.33333,乘以 3 将计算为 0.99999,这与 1 不同),而 1 / 4 * 4 == 1 确实成立(1 / 4 将计算为 0.25,乘以 4 将计算为 1)。

你的问题有点类似于这个,但是是针对以 2 为基数的计算。每个常数和运算都是一个近似的机会。有时近似值不会发生,有时近似值会发生但会相互抵消,因此最终结果比您预期的更准确。如果是0.1 + 0.1,结果不是 2/10,但它与您编写时得到的 2/10 的近似值相同0.2,因此等式成立。和0.1 + 0.1 + 0.1我们碰巧没有那么幸运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 0.1 + 0.1 == 0.2? 的相关文章

  • 有什么好的 JavaScript 货币或小数类吗?

    我正在尝试处理 JavaScript 值 例如23 45 但我希望能够对这些值进行数学运算 加法 减法 乘法 除法 而不会遇到浮点问题 是的 有时我可能需要对结果进行四舍五入 但我希望它给出合理的答案 在 JavaScript 中考虑一下
  • 为什么 C 给我的答案与我的计算器不同?

    我在这段代码中遇到了一个奇怪的问题 legibIndex 206 385 84 6 countSylb countWord 1 015 countWord countSent 这是给定文本文件的易读性指数的计算 由于这是一项家庭作业 我们被
  • _ftol2_sse,有更快的选择吗?

    我有调用很多的代码 int myNumber int floatNumber 这总共占用了我大约 10 的 CPU 时间 根据分析器 虽然我可以就这样 但我想知道是否有更快的选择 所以我尝试四处搜索 并偶然发现 http devmaster
  • 尝试在整数后添加字符然后打印结果时出现奇怪的结果

    我正在尝试创建一个简单的欧姆定律计算器 所以我们的想法是你可以填写两个变量 然后它会计算第三个变量 当我创建这个程序时 我发现了一个小问题 我不明白它是如何发生的 不幸的是我无法找到答案 我尝试打印一个显示完整计算的字符串 用户填写的两个变
  • 对浮点数求反总是安全的吗

    考虑 double f foo double g f where foo 可以返回分配给的任何内容f is double g f 在 C 和 C 中安全吗 对于 IEEE 754 类型 显然是这样 但 C 和 C 并不限制浮点实现 与 Ja
  • 在 Go 中获取机器 epsilon 的最简单方法

    在 Go 中获取机器 epsilon 的最简单方法是什么 浮点数的其他方面 例如精度 最小指数 最大指数 摆动等 又如何呢 我意识到有一个 math const 包 其中包含不同浮点类型的最大值和最小值 http golang org sr
  • 为什么 float() 会截掉尾随零?

    该代码成功地将一个包含许多数字的大文件裁剪为几个包含数字的较小文本文件 但它产生了一个有趣的怪癖 所有数字都应精确到小数点后四位 例如 2 7400 但它们打印为 2 74 这是文件的片段 0 96 0 53 0 70 0 53 0 88
  • 浮点等于的意外结果

    问题不在于为什么0 1 0 9不等于1 0 这是关于平等者的不同行为 有人可以解释为什么下面的示例的工作方式不同 float q 0 1f float w 0 9f float summ q w q w 1 0f False summ 1
  • cout 可以以某种方式改变变量吗?

    所以我有一个看起来像这样的函数 float function float x SomeValue return x SomeOtherValue 在某些时候 这个函数会溢出并返回一个非常大的负值 为了尝试准确追踪发生这种情况的位置 我添加了
  • 浮点型、双精度型和十进制最大值与大小的关系[重复]

    这个问题在这里已经有答案了 我在 C 中遇到了这些数据类型的大小和最大值的令人困惑的模式 在使用 Marshal SizeOf 比较这些大小时 我发现了以下结果 Float 4 bytes Double 8 bytes Decimal 16
  • 测试由于浮点限制而导致的舍入误差

    我最近了解到浮点的主要限制之一 事实上 某些数字无法以二进制正确表示 因此可能给出的答案对于您的目的来说不够准确 知道round 2 675 2 and round 2 665 2 两者相等2 67我尝试编写一些代码来给出具有此属性的数字列
  • 整数转浮点数

    这段代码的工作原理 posToXY Float gt Float gt Integer posToXY a b do let y a b round y 但这不起作用 posToXY Integer gt Integer gt Intege
  • 为什么没有 2 字节浮点并且已经存在实现?

    假设我真的内存不足并且想要更小的范围 类似于short vs int 着色器语言已经支持half对于半精度的浮点类型 不仅仅是来回转换使值在 1 和 1 之间 即返回一个像这样的浮点数 shortComingIn maxRangeOfSho
  • 将两个 Int 值相除以获得 Float 的正确方法是什么?

    我想分两份IntHaskell 中的值并获得结果Float 我尝试这样做 foo Int gt Int gt Float foo a b fromRational a b 但 GHC 版本 6 12 1 告诉我 无法将预期类型 Intege
  • 如何处理 PHP 中浮点数的奇怪舍入

    众所周知 浮点运算并不总是完全准确 但是如何处理它的不一致之处呢 As an example in PHP 5 2 9 this doesn t happen in 5 3 echo round 14 99225 4 14 9923 ech
  • PostgreSQL round(v numeric, s int)

    Which method http en wikipedia org wiki Rounding Tie breakingPostgres 吗round v numeric s int http www postgresql org doc
  • 如何在C++中生成高精度的随机双数?

    我正在尝试生成一系列高精度的双随机数 例如 0 856365621 小数点后有 9 位数字 我从网上找到了一些方法 但是 它们确实生成了双随机数 但精度没有我要求的那么好 只有小数点后6位 那么 我可以知道如何实现我的目标吗 在 C 11
  • 如何设置变量内的浮点精度

    我目前正在编写一个程序 需要将浮点后的四舍五入值计算为仅 2 位数字 说吧 我已经声明了 float a If a 3 555然后它会存储a 3 56 围捕 For a 3 423 a的值是a 3 423 不用找了 我可以这样做来打印输出
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但

随机推荐

  • c++ - 不命名类型

    我有一个问题 当我尝试构建以下代码时 我得到 keywords does not name a type whitespace does not name a type 第 18 19 行和第 22 24 行 有人可以帮忙吗 这是代码 cp
  • 我如何解释这个输入?

    我目前使用 ANTLR 在 Java 中实现了一种可用的 简单的语言 我想做的是将其嵌入纯文本中 与 PHP 类似 例如 Lorem ipsum dolor sit amet Phasellus volutpat dignissim sap
  • Woocommerce/Wordpress - 将用户登录重定向到主页

    我已经搜索了这个问题的答案 使用了插件 但仍然没有任何效果 我希望我的网站的用户在登录 注册后被重定向到主页 目前 用户登录并被重定向到我的帐户页面 Woocommerce 提供了此代码 但它对我不起作用 goes in theme fun
  • 如何减少/消除 Angular 应用程序中的内存泄漏

    我正在优化我的大Angular App 当我发现一个Google DevTools非常好发现问题 由于我刚刚开始学习DevTools 我对内存泄漏很困惑 当我在应用程序中的不同页面之间来回移动时 配置文件堆快照大小一次又一次地增加 因此我认
  • 如何在 Java 中为 Swing 组件设置字体粗细

    我想设置不同字体粗细我的 JFrame 对话框上的组件 我该怎么做呢 在下面的Java语句中 setFont new Font Dialog Font BOLD 12 当我使用 Font BOLD 时 它太粗体 当我使用 Font Plai
  • Spark 设置为从最早的偏移量读取 - 在尝试使用 Kafka 上不再可用的偏移量时抛出错误

    我目前正在 Dataproc 上运行 Spark 作业 在尝试重新加入组并从 kafka 主题读取数据时遇到错误 我做了一些挖掘 但不确定问题是什么 我有auto offset reset set to earliest所以它应该从最早可用
  • 将 JSON 对象的一部分存储在 pandas df 中[重复]

    这个问题在这里已经有答案了 我正在尝试将以下内容存储到 pandas 数据框中 page 1 results poster path null adult false overview Go behind the scenes during
  • 使用 koa.js 显示静态 html 文件

    我想要做的是在调用索引路由 即 localhost 3000 时提供 index html 文件 我使用 koa router 进行路由 所以我的路线如下所示 app all function next Send the file here
  • 我在 Matter.js 中自己的模型

    我正在使用 Matter js 编写一个简单的游戏 我无法弄清楚如何最好地将我的模型挂接到 Matter js 中 我的游戏以细菌为特色 我想上一堂课Bacterium这样我就可以管理这些人了 在我当前的实现中 此类创建并存储自己的Matt
  • char 160 在我的源代码中意味着什么?

    我正在使用以下格式字符串 将数字格式化为字符串 在某些时候我需要将这些数字字符串 1 234 567 转回类似 1234567 的内容 我正在尝试删除空字符但发现 value value Replace 由于某种原因 该字符串仍然是 1 2
  • 通过智能感知支持从文件动态生成枚举

    我听说了很多关于 Roslyn 的事情 我只是想是否可以从 xml 文件动态生成代码 这样对于开发人员来说它是透明的 他可以使用 IntelliSense 枚举代码 就像代码是在项目中编写的一样 我正在编写一个框架 其中通过配置文件完成了很
  • SPARK 整数溢出检查

    我有以下程序 procedure Main with SPARK Mode is F array 0 10 of Integer 0 1 others gt 0 begin for I in 2 F Last loop F I F I 1
  • 单个应用程序的 REST 和 SOAP Web 服务

    我们使用 Spring 构建了一个应用程序 并使用 Tomcat 部署了它 我们有一个可用的 REST 接口 但是我们的一个客户端只有一个 SOAP 客户端 我的理解是 SOAP Web 服务和 REST Web 服务不能在同一端口或应用程
  • 使用 JavaScript 手动单步执行 CSS 动画

    如果我有一个像这样的 CSS 关键帧动画 keyframes flash red 50 background f00 goflash anm flash animation name flash red animation duration
  • 即使删除了大量较大的文件,GIT Repo 仍然很大

    我有一个长期存在的 git 存储库 最终来自另一个开发人员的一大堆不相关的文件 占用了大量的存储空间 它使用了像 5gb 这样愚蠢的东西 因为他包含了资源文件 有 5000 个 PSD 文件在回购协议中 我已经从存储库中删除了所有这些文件并
  • MySQL EXPLAIN EXTENDED 过滤列(显然不是百分比)

    我一直在寻找这个 他们都说明了某种百分比 解释一下 EXPLAIN EXTENDED SELECT FROM PageAccess ORDER BY AccessId DESC LIMIT 20 SELECT COUNT FROM Page
  • C++ - 如何隐藏其他应用程序的窗口

    我正在尝试创建一个软件 Qt C 其中我需要一种根据窗口标题隐藏其他应用程序窗口的功能 隐藏意味着不可见而不是最小化 任何人都可以说出如何实现这一目标吗 我目前正在Windows平台上工作 注意 如果您通过 Qt 提供解决方案 将会更加舒适
  • 在多边形内部随机放置一个多边形

    我有两个多边形定义为一系列 2D 浮点值 不保证它们是凹的或凸的 他们不会超越自己 他们不能旋转 如果可能的话 我想将一个随机放置在另一个内部 主要问题是效率 我必须在几秒钟内执行大约 200 次左右 我已经研究这个问题几天了 但没有取得明
  • 为什么页面错误通常由操作系统而不是硬件处理?

    我发现在TLB丢失过程中 有些体系结构使用硬件来处理它 而有些体系结构则使用操作系统 但当涉及到页面错误时 大多数都使用操作系统而不是硬件 我试图找到答案 但没有找到任何文章解释原因 有人可以帮忙解决这个问题吗 谢谢 如果硬件能够自行处理它
  • 为什么 0.1 + 0.1 == 0.2?

    这是关于Java的 据我了解 由于二进制表示形式 Java 无法完美表示 0 1 这使得 0 1 0 1 0 1 0 3 错误的 然而 为什么 0 1 0 1 0 2 给出真实的 由于二进制表示形式 0 1 无法用 Java 完美表示 这使