Java Double 变量有奇怪的值[重复]

2023-12-07

可能的重复:
Java 中的浮点运算不能产生精确的结果

我正在做这个简单的除法,但我得到了一个非常奇怪的输出:

double a = 60/(1.2-1.1);

=> 600.0000000000008

什么时候应该是600。

提前致谢


在 IEEE-754 二进制双精度中,我们需要考虑二进制表示中的 1.1 和 1.2:

1.2 = 0b1.001100110011001100110011001100110011001100110011001100110011...
1.1 = 0b1.000110011001100110011001100110011001100110011001100110011001...

请注意,我们需要无限多个位才能以二进制精确地表示它们。 double 只有 53 位有效位,我们必须截掉数字:

1.2 = 0b1.001100110011001100110011001100110011001100110011001100110011...
1.1 = 0b1.000110011001100110011001100110011001100110011001100110011001...
                                                              ^ round from here
==>
1.2 ~ 0b1.0011001100110011001100110011001100110011001100110011
      (= exactly 1.1999999999999999555910790149937383830547332763671875)
1.1 ~ 0b1.0001100110011001100110011001100110011001100110011010
      (= exactly 1.100000000000000088817841970012523233890533447265625)

因此 1.2 - 1.1 为:

  1.2 ~ 0b1.0011001100110011001100110011001100110011001100110011
- 1.1 ~ 0b1.0001100110011001100110011001100110011001100110011010
————————————————————————————————————————————————————————————————
        0b0.00011001100110011001100110011001100110011001100110010000
        (= exactly 0.09999999999999986677323704498121514916419982910156250000)

我们实际上可以准确地计算 60 / 0.0999999999999998667732370449812151491641998291015625 ,这给出

600.0000000000007993605777301137740672368493927467455286920109359612256820927...
                ^ 16th significant figure

与 OP 的结果匹配

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

Java Double 变量有奇怪的值[重复] 的相关文章

  • 我可以确定谁在调用 Java 中的函数或实例化类吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在Java中 如何使用堆栈跟踪或反射找到方法的调用者 https stackoverflow com questions 421280 in java how do i find the caller
  • Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

    在 Spring Boot 项目中 我使用 CreatedDate 之类的注释来保存有关创建 更新相应文档的日期的信息 整个项目都使用 ZonedDateTime 因此带注释的字段也是 ZonedDateTime 为了实现 Mongo 的日
  • RxJava + Retrofit 2 的正确使用方法

    我有这样的 JSON success true data id 29 name u0420 u0435 u0441 u0442 u043e u0440 u0430 u0446 u0456 u044f u0411 u0430 u0447 u0
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 帮助我避免 JPA、Hibernate 和 MySQL 的连接超时

    我正在使用 JPA Hibernate 作为提供者 Glassfish 和 MySQL 开发中一切都运行良好 但是当我将应用程序部署到测试服务器并让它运行 大部分空闲 过夜时 我通常会在早上遇到这样的情况 2011 03 09T15 06
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • net.sf.jasperreports.engine.JRRuntimeException:java.io.IOException:无法读取字体数据

    我正在尝试通过 JasperReport 创建 PDF 报告 但读取字体数据时出现问题 我有 jasperreports extension properties 和 ClassPath 中的相关 TTF 文件 这是错误 java io I
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • 无法自动装配 org.springframework.mail.javamail.JavaMailSender

    尝试运行我的应用程序时遇到以下问题 所有的东西都调试过了 还是一无所获 IDE 毫无问题地找到了 bean 所以我对这里发生的情况感到非常困惑 SEVERE Exception sending context initialized eve
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • 如何使用 html/css 应用不透明度而不影响子元素?

    我想使用 html 和 css 来实现这一点 我尝试将容器的不透明度设置为 0 3 将盒子的不透明度设置为 1 但它不起作用 两个 div 的不透明度均为 0 3 我在这里尝试的 jsFiddle 我想要实现的效果是页面顶部出现一个弹出框
  • 使用numpy.random.normal时如何指定上限和下限

    我希望能够从只落在 0 和 1 之间的正态分布中选取值 在某些情况下 我希望能够基本上返回完全随机的分布 而在其他情况下 我希望返回落在 0 和 1 之间的值高斯的形状 目前我正在使用以下功能 def blockedgauss mu sig
  • 休息 - 404 未找到

    我正在使用 ColdFusion 10 的 RESTful Web 服务 首先 我通过 CF admin 注册了一个休息服务 C ColdFusion10 cfusion wwwroot restful 并将其命名为 IIT 现在 我有 C
  • 如何在JMeter中修改/添加Cookie?

    我对 JMeter 非常陌生 需要您帮助我了解如何修改 cookie 这是场景 我正在测试一个提供多个问题答案的评估 考试网站 当用户做出选择并点击提交按钮时 页面中的 JavaScript 会将其答案 例如 Answers BBAACDA
  • 何时使用定义

    我对测试参数的方式有点困惑 以下是下面发布的源代码中的两个示例 首先是这个 if defined DBHdl defined acct no 测试未定义参数的方法 其次 分配给 hashref 后 ptMtrRecRef ptSelHdl
  • 实施 Barabasi-Albert 方法来创建无标度网络

    我正在尝试实现一个非常简单的优先附件算法来创建无标度网络 它们的度分布遵循幂律 即 P k k g 其中 g 是指数 下面的算法应该产生指数等于 3 0 1 的度分布 但我的实现并不使指数更接近 2 5 0 1 我显然在某些地方不理解并且继
  • Java方法不改变参数对象[重复]

    这个问题在这里已经有答案了 我有一个这样的函数 public static int partition List list ListElement elemL ListElement elemR ListElement elemX elem
  • 如何在 jQuery 中仅选择标签之外的文本

    我正在尝试实施文本突出显示搜索脚本在客户的 WordPress 网站上 该脚本对网页中的原始 HTML 数据执行正则表达式搜索 将 span 标签 css 元素添加到与查询匹配的文档的任何部分 但是 我正在尝试搜索一些多级 HTML 标头等
  • 带参数的 PHP 标头位置

    是否可以将参数附加到 PHP 标头位置 我无法让它发挥作用 这种语法实际上是允许的吗 qry SERVER QUERY STRING header Location http localhost blast v2 qry 它只是不会用它的实
  • R Shiny 将来自多个动态生成的 textAreaInput 字段的用户输入存储在服务器部分的对象中

    New to shiny并为此苦苦挣扎了两天多 我创建了一个用户加载的应用程序 csv数据文件并选择一个或多个变量 其名称在应用程序中显示为复选框 当选中一个复选框时 一个新的复选框会出现在同名的下方 当它被单击时 一个新的复选框也会出现在
  • Junit/Fongo:如何在单元测试中使用 Fongo 来检查 NotNull

    我正在编写一个基本单元测试 检查返回的查询 DataVersion 类型 是否不为空 我必须确保我正在使用 Fongo 来测试我的数据库 这是回购类 Repository public class DataVersionDaoMongo e
  • 我可以将 Maven 属性中的列表传递到插件配置中吗

    我有一个插件 它在其配置中包含一个列表
  • List.Add() 的问题仅保存最后添加的项目[重复]

    这个问题在这里已经有答案了 我注意到的问题是这行代码 tempList Add orderables 在此完整代码中 AssociatedComboItems ai new AssociatedComboItems List
  • PHP:将分隔的逗号字符串值与多个数组值插入到 MySql 中

    这是我的目标 1 我只有一个从服务器发送的 ID 其中包含以逗号分隔的字符串列表 它看起来像这样 ID 1 名称 蓝色 红色 绿色 黄色 2 这是我的尝试 2 1 我尝试使用此代码将名称更改为数组 myString Red Blue Bla
  • 如何重新加载在另一个文件中导入的Python模块?

    我正在尝试了解 Python 如何重新加载模块 但遇到了障碍 假设我有 dir1 file1 py from dir2 file2 import ClassOne myObject ClassOne dir1 dir2 file2 py c
  • “data.table”包中的“setDT”错误

    这好像是setDT每当您尝试在存储的数据上运行它时 都会返回错误datasets包裹 例如 library data table setDT CO2 Error in assign name x parent frame inherits
  • Spring Hibernate - CrudRepository 和 SessionFactory 之间的区别

    我正在考虑使用 Hibernate 来保存我的模型 我似乎找到了两种方法来做到这一点 第一个正在使用SessionFactory 例如 public Collection loadProductsByCategory String cate
  • iOS 7 弃用核心蓝牙

    在 iOS 7 中 一些核心蓝牙内容现已被弃用 例如 CBUUIDGenericAccessProfileString 和 CBUUIDDeviceNameString 这苹果文档 state Deprecated There are no
  • 无法使用类型为 (Int, @value Int) 的参数列表调用“+=”

    我有课Transaction其中有一个变量金额类型的Int 我想从另一个班级访问它 我有一个array of Transactions并将其所有金额相加 所以我有这段代码 func computeTotal gt Int let total
  • Java Double 变量有奇怪的值[重复]

    这个问题在这里已经有答案了 可能的重复 Java 中的浮点运算不能产生精确的结果 我正在做这个简单的除法 但我得到了一个非常奇怪的输出 double a 60 1 2 1 1 gt 600 0000000000008 什么时候应该是600