是什么导致 BigDecimal.divide 出现“非终止十进制扩展”异常? [复制]

2024-03-13

我以前使用过 BigDecimals,但不经常使用,今天早上我正在做一些事情,但我不断收到以下异常:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion;
no exact representable decimal result.
    at java.math.BigDecimal.divide(BigDecimal.java:1594)

我试图设置比例并使用舍入来消除问题,如下所示:

    BigDecimal bd1 = new BigDecimal(1131).setScale(2,BigDecimal.ROUND_HALF_UP);
    BigDecimal bd2 = new BigDecimal(365).setScale(2,BigDecimal.ROUND_HALF_UP);
    BigDecimal bd3 = bd1.divide(bd2).setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println("result: " + bd3);

但是,我不断遇到同样的异常。有人能告诉我我在哪里犯了错误吗?


非终止小数需要四舍五入

使用时divide https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal,java.math.MathContext)你应该使用MathContext https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/MathContext.html with RoundingMode https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/RoundingMode.html以防精确结果有无限位数的小数。

这就是你的情况:

MathContext mc = new MathContext(2, RoundingMode.HALF_UP) ;
BigDecimal bd3 = bd1.divide(bd2, mc);

或者致电divide https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal,java.math.RoundingMode)使用舍入模式来使用分子的刻度(bd1在下面的例子中):

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

是什么导致 BigDecimal.divide 出现“非终止十进制扩展”异常? [复制] 的相关文章

随机推荐

  • 自定义SeekBar的矩形边缘[重复]

    这个问题在这里已经有答案了 我已经定制了SeekBar用一个分层绘制 drawable工作正常 但是用作背景的drawable在角处变成圆角 两个角 这里只显示右端 当拇指移动到最左边时 左角也变圆 注意 原始图像是矩形的 我怎样才能把它变
  • 在 iOS 中测量/计算距离

    我需要计算 iOS 中两点之间的距离 我可以保证至少有一部iPhone 4 所以相机的图像质量应该很好 这个想法是使用图片计算到某个点的距离 有一个名为 easyMeasure 的应用程序 它完全可以满足我的需要 我对毕达哥拉斯很满意 但这
  • 将简单的服务器代码部署到 Heroku

    我最近访问了 heroku com 网站并尝试在那里部署我的第一个 Java 程序 实际上我使用他们的 Java 部署教程有了一个良好的开端 并且运行正常 现在我有一个需要在那里部署的服务器代码 我尝试遵循该示例 但我有一些问题 例如 1
  • 邮递员 - 为每个请求覆盖用户代理

    我有一个网站 只有在基本身份验证登录后才能访问 您可以使用特定的用户代理绕过它 有没有办法始终将新请求的用户代理设置为某个值 目前它被硬编码为PostmanRuntime 7 29 0 目前 我总是为每个请求手动设置它 但这会减慢工作流程
  • Hedera 上几乎相同的交易中“gasUsed”值存在巨大差异 - 为什么?

    我注意到所使用的气体量之间存在差异 通过交易几乎是相同的 我正在调用智能合约 连续两次使用相同的参数 两者之间的唯一区别 是我正在设置gasLimit到精确值 由返回eth estimateGas在第一个中 我正在设置gasLimit to
  • 如何不需要用户输入 install.packages(type = "both")

    通常情况下 install packages type both 如果有需要从源代码构建的包 则需要用户输入 例如 目前 R 3 5 1 install packages c feather tidyr type both 将从二进制安装
  • 如何更新 bitbucket 上的拉取请求?

    如何在本地计算机上的 IDE 中的 bitbucket 上更新您自己的拉取请求之一 此工作流程没有按我的预期工作 克隆你的叉子 检查您用于拉取请求的分支 做出改变 git 添加 git 提交 推送提交 到您的分叉存储库 到目前为止一切顺利
  • MenuStrip 无法获得负载焦点

    我会尽可能准确 我有一个主表单 我们将在 Form1 中将其称为 Form1 用户可以通过菜单条启动另一个表单 在 Form2 中将其称为 Form2 我有另一个菜单条和一个数据网格视图 我的问题是 当用户启动 Form2 时 我必须在菜单
  • R函数将对象转换为代码

    我正在 R 中寻找一个函数 它将对象转换为可用于创建该对象的副本的代码 像这样的事情 gt myObject c 1 2 3 gt magicFunction myObject 1 c 1 2 3 我认为这个功能是存在的 但我找不到它 非常
  • 使用 Nginx 服务器设置 Symfony

    我的项目需要使用 Nginx 服务器设置 symfony 我之前曾将 Symfony 与 Apache 一起使用 目前我已按照此处提到的步骤进行操作 但不知何故它运行不正常 Update nginx wiki 现在包含symfony 1 4
  • Javascript eval() 和附加脚本标签之间的区别

    我想知道是否有人可以解释使用 Javascript 的 eval 和另一种方法之间的区别 例如使用 JQuery 创建脚本标签 然后将该元素附加到页面 eval somecode vs appendTo head 不确定这是否相关 但上下文
  • 如何让 Ohai 插件生成 ['etc']['passwd']?

    我已将 Chef 客户端从14 0 to 15 3 14但每当我在我的节点 macOS Mojave 上执行 Chef client 时 就会出现问题 客户端输出是 undefined method for nil NilClass Coo
  • CUDA:同步线程

    几乎在我读到的有关 CUDA 编程的任何地方都提到了 warp 中的所有线程都执行相同操作的重要性 在我的代码中 我遇到了无法避免某种条件的情况 它看起来像这样 some math code calculating d1 d2 if d1
  • 编译启用位码的 iOS 库

    我需要发布一个启用了位码的框架 但这很麻烦 我将项目设置中的 启用位码 设置为 是 它可以为真实设备和模拟器干净地构建 我想测试这个库 所以我将它集成到我为此目的创建的新应用程序中 但现在它只为模拟器构建 当我尝试为真实设备构建时 我得到
  • 插入包含撇号(单引号)的数据时MySQL出错?

    当我插入查询包含引号时 例如Kellog s 插入记录失败 错误信息 您的 SQL 语法有错误 检查手册 与您的 MySQL 服务器版本相对应 以便使用正确的语法 靠近 s 玉米片 170g 15 90 15 90 14 10 at 第 1
  • 如何在调试模式下运行 Apache Tomcat 8?

    我正在尝试在调试模式下运行 Apache Tomcat 8 0 21 当我发出命令时 sh catalina sh jpda start 它给出了这个错误 错误信息 错误 无法两次加载此 JVM TI 代理 请检查您的 java 命令 重复
  • SyncAdapter periodsync() 未触发

    我正在尝试弄清楚syncAdapter是如何工作的 我使用sampleSync Adapter作为示例 起点 并基于它进行了我的第一次测试 唯一的区别是我不使用默认的联系人提供程序 但我需要自己的联系人提供程序之一 此方法与 SampleS
  • 部分重写子类中的虚拟自动属性

    是时候回答我刚刚遇到的理论问题了 以下代码有效并可编译 public class Parent public virtual object TestProperty get set public class Child Parent pri
  • 访问服务时在 Docker Swarm 1.12 中记录客户端的“真实”IP 地址

    我有 nginx 容器作为服务在用户创建的覆盖网络内的 Docker Swarm 中运行 两者都是用以下内容创建的 docker network create driver overlay proxy docker service crea
  • 是什么导致 BigDecimal.divide 出现“非终止十进制扩展”异常? [复制]

    这个问题在这里已经有答案了 我以前使用过 BigDecimals 但不经常使用 今天早上我正在做一些事情 但我不断收到以下异常 Exception in thread main java lang ArithmeticException N