Java BigDecimal精度问题

2024-01-28

我知道以下行为是一个老问题,但我仍然不明白。

System.out.println(0.1 + 0.1 + 0.1);    

或者即使我使用BigDecimal

System.out.println(new BigDecimal(0.1).doubleValue()
    + new BigDecimal(0.1).doubleValue()
    + new BigDecimal(0.1).doubleValue());

为什么会出现这样的结果:0.30000000000000004代替:0.3?

我该如何解决这个问题?


你真正想要的是

new BigDecimal("0.1")
 .add(new BigDecimal("0.1"))
 .add(new BigDecimal("0.1"));

The new BigDecimal(double)构造函数得到了所有的不精确性double,所以当你说的时候0.1,您已经引入了舍入误差。使用String构造函数避免了与通过相关的舍入错误double.

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

Java BigDecimal精度问题 的相关文章

  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 即使在轴上进行自动量程调整,我也可以保留积分刻度线吗?

    我 偷 了一些代码here http fxexperience com 2012 01 curve fitting and styling areachart 拥有一个AreaChart我在 FXML 中使用了 平滑线条 它的工作原理如下
  • 这个等待通知线程语义的真正目的是什么?

    我刚刚遇到一些代码 它使用等待通知构造通过其其他成员方法与类中定义的线程进行通信 有趣的是 获取锁后 同步范围内的所有线程都会在同一锁上进行定时等待 请参见下面的代码片段 随后 在非同步作用域中 线程执行其关键函数 即 做一些有用的事情1
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • java setFullScreenWindow 在 Mac 中隐藏登录对话框

    我使用的是全屏窗口 类似于屏幕保护程序 使用这里的方法 GraphicsEnvironment getLocalGraphicsEnvironment getDefaultScreenDevice setFullScreenWindow t
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • 嵌套字段的 Comparator.comparing(...)

    假设我有一个这样的域模型 class Lecture Course course getters class Course Teacher teacher int studentSize getters class Teacher int
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • 如何减去两个 XmlGregorianCalendar 对象来创建一个 Duration 对象?

    我想计算两个时间之间的差值XmlGregorianCalendar对象 从而创建一个Duration object 但我还没有找到执行减法的干净方法 你会怎么做 那应该是 DatatypeFactory newDuration xgc2 t
  • java.lang.IllegalStateException - 提交响应后无法创建会话

    我在我的项目中使用 JSF PrimeFaces 我为此准备了一个Maven项目 当我编译项目并加载主页后 我收到以下异常 java lang IllegalStateException Cannot create a session af
  • 如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

    使用 Apache commons net 的 Java FTPSClient 进行会话恢复是一个已知问题 会话恢复是 FTPS 服务器数据连接所需的一项安全功能 Apache FTPSClient 不支持会话恢复 并且 JDK API 使
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle

随机推荐

  • 我们可以继承并更改odoo中的noupdate =“1”吗?

    是否可以继承一个 xml 并更改其可更新性 我尝试继承 检查操作规则 将 interval number 从 4 小时更改为 1 小时 让它每小时运行一次 我认为它可能不起作用 因为 noupdate 1 有人对此有任何想法吗 是的 您可以
  • 如何从 Textmate 2 的项目抽屉中删除 SCM 文件状态

    我可以从项目抽屉中的文件中删除这些状态图标吗 即下图中的红色 x 和绿色 我尝试从 Textmate 中删除一些 SCM 捆绑包 但这并没有成功 我正在使用最新版本的 Textmate 2 你可以加scmStatus false到您的 Te
  • 参数号无效:致命错误

    News Feed Data public function newsFeed db getDB stmt db gt prepare SELECT user id as id user nome as nome app id as app
  • 在 Swift 中使用 AVAudioEngine 保存更改时间音调的音频文件

    目前 我正在尝试更改文档文件夹中现有音频文件的时间音调 然后使用 AVAudioEngine 用修改后的文件覆盖旧文件 我已经使用 AVAudioPlayerNode 和 AVAudioUnitTimePitch 完成了第一部分的工作 不过
  • jsp页面如何将int值转换为字符串

    我有一个包含 Map 的地图 我使用它在 jsp 页面上迭代它
  • jQuery/JavaScript - 拥有大量小 .js 文件时的性能问题?

    我有一个包含大量引用的 js 文件的网站 这些是相当小的文件 但我想将我的方法按主题 功能分开 将所有方法保存在一个 js 文件中是否更好 或者拥有许多 20 30 个小文件都只包含一些行没有问题 无论如何 将它们分开进行开发 但您应该考虑
  • ios 11 自定义导航栏位于状态栏下方

    刚刚下载了 xcode 9 我遇到了这个奇怪的问题 在 ios 11 上 我的自定义导航栏似乎只有一半大小 位于状态栏下方 在 ios 10 上工作正常 所以这是我的代码 let newNavbar UINavigationBar UINa
  • 启用 AOP 会破坏我对带有字符串的工厂 bean 的依赖注入

    启用 AOP 会破坏我对带有字符串的工厂 bean 的依赖注入 这是上下文文件中的片段
  • R类型转换表达式()函数()

    我一直在尝试用 R 编写一个程序来实现牛顿法 我基本上是成功的 但有两个小障碍一直困扰着我 这是我的代码 Newton lt function f f guess f lt readline prompt Function f lt rea
  • time() 是好盐吗?

    我正在查看一些我自己没有编写的代码 该代码尝试使用 SHA512 对密码进行哈希处理 并仅使用time 作为盐 是time 盐太简单了还是这个代码安全 感谢您的回答和评论 我在这里为新读者总结一下 每个用户的盐应该不同 因此如果2个用户同时
  • 如何计算两个 AnchorEntities 之间的距离?

    有一个位置是SIMD3 还有 AnchorEntity 我想拉开两人之间的距离 我是怎么做到的 var distance distance position self modelentity position relativeTo nil
  • GUID 的不可猜测性如何?

    不久前 我开发了一个网络应用程序 用户可以在其中购买门票 由于我们客户流程的工作方式 您在购买后实际上得到的是一个包含票号的 URL 这些是在中东购买房产的门票 每张门票的潜在价值约为 3 000 000 美元 显然 给出连续整数是一个坏主
  • 如何在开发过程中禁用 Crashlytics

    有没有简单的方法可以在开发时关闭 Crashlytics Android SDK 我不希望每次我做蠢事时它都会发生崩溃 另一方面我不想发表评论Crashlytics start 并且可能有忘记取消注释并提交的风险 我从 Crashlytic
  • 如何向 Django MPTT 模型添加额外数据以在模板中显示?

    这个问题与this one https stackoverflow com questions 19762288 how to add extra data to a django model for display in template
  • 带有重音字符的 SQLite 排序列

    我正在开发一个网站 使用SQLite使用 PHP 的数据库 我在跑Windows 开发 和我的生产环境应该是 nix平台 这是我的表的架构 CREATE TABLE animals id INTEGER NOT NULL UNIQUE na
  • 如何使网站的第一部分首先加载? (就像 Google PageSpeed 一样)

    我有一个非常大的网站 加载需要很长时间 大约需要 120 秒 我想做的是加载网站的第一半加载第一 然后用户可以在加载其他部分的同时进行冲浪 我正在尝试做的事情如下 首先这可能吗 据我所知是的 因为 Google PageSpeed 就是这样
  • 如何向网络服务器发出我正在发布 gzip 压缩数据的信号?

    我有一个客户端将把大型 JSON 文件发布到 API 服务器 由于文件是如此可压缩 我想对它们进行 gzip 并发送压缩数据 我想知道的是 向服务器表明我的意图的最佳方式是什么 基本上 我想要相反的Accept encoding 这样服务器
  • 通过 ArrayList 进行反向迭代会出现 IndexOutOfBoundsException

    当我反向迭代 ArrayList 时 我收到 IndexOutOfBoundsException 我尝试进行前向迭代 没有问题 我期望并知道列表中有五个元素 代码如下 Collection rtns absRtnMap values Lis
  • 在 SVG 路径内嵌套文本

    是否可以嵌套文本 例如text元素 在 SVG 内path元素 我这样问是因为我希望将鼠标悬停在路径上时显示一个文本气球 如下所示 path mypath hover text display block 我想避免使用 JavaScript
  • Java BigDecimal精度问题

    我知道以下行为是一个老问题 但我仍然不明白 System out println 0 1 0 1 0 1 或者即使我使用BigDecimal System out println new BigDecimal 0 1 doubleValue