如何处理 Java BigDecimal 中的舍入错误

2024-02-08

我正在与开源项目(axil)合作,该项目在java应用程序内部实现了脚本引擎,并且在尝试利用BigDecimal的舍入时遇到了一个主要的障碍。 BigDecimal 似乎正在将我的输入转换为科学记数法,然后将我传递的精度应用于数字的 SN 表示的系数,而不是其非 SN 表示。例如:

new BigDecimal("-232454.5324").round(new MathContext(2, RoundingMode.HALF_UP)).toString()

产生的结果为-2.3E+5。这给我带来了两个问题。首先,我期待一个结果-232454.5 (-2.324545E+5),所以得到-230000抛弃任何涉及结果的数学。其次,我没有期待,也找不到解决方法,以 SN 形式获取结果(尽管我希望有一种我还没有偶然发现的格式化方法)。

现在,由于项目的性质,我们对将传递给 round() 方法的数字的大小/类型几乎没有期望,因此任何解决方案都需要高度模块化。有没有人有什么建议?如果有帮助的话,这里有一个指向项目中这个错误的谷歌代码问题报告的链接。 http://code.google.com/p/axil/issues/detail?id=58 这是项目主页的链接。 http://www.axil-lang.org/

很感谢任何形式的帮助。


不要使用 round 方法,而是使用 setScale ,其中参数是小数位数:

BigDecimal bd = new BigDecimal("-232454.5324").setScale(1,
                RoundingMode.HALF_UP);
String string = bd.toPlainString();
System.out.println(string); // prints -232454.5

另请注意,setScale 返回一个新的 BigDecimal 实例,它不会更改当前实例的比例。

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

如何处理 Java BigDecimal 中的舍入错误 的相关文章

  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 在 Java 正则表达式中获取多个模式的重叠匹配

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • 对象数组的数组(二维数组)JNI

    我正在努力创建自定义对象类型 ShareStruct 的二维数组 jobjectArray ret jobjectArray ins jobjectArray outs jclass myClass env gt FindClass env
  • 使类只能从特定类实例化

    假设我有 3 节课class1 class2 and class3 我怎样才能拥有它class1只能通过实例化class2 class1 object new class1 但不是 class3 或任何其他类 我认为它应该与修饰符一起使用
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 从 Spring MVC XML 文件转移到 javaconfig。我真的对我的数据库 XML 文件感到困惑

    我从 Spring MVC XML 文件转移到 javaconfig 我真的对我的数据库 XML 文件感到困惑 我不知道如何让 Hibernate4 工作以及我的 JBoss JNDI 数据源工作 有人可以告诉我如何使 javaconfig
  • 重写 getPreferredSize() 会破坏 LSP

    我总是在这个压倒一切的网站上看到建议getPreferredSize 而不是使用setPreferredSize 例如 如前面的线程所示 对于固定大小的组件 使用重写 getPreferredSize 而不是使用 setPreferredS
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • Spring中的ProxyFactoryBean

    有人可以解释一下吗代理工厂Bean http static springsource org spring docs current javadoc api org springframework aop framework ProxyFa
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • Struts 1 到 Spring 迁移 - 策略

    我有一个legacy银行应用程序编码为Struts 1 JSP现在的要求是迁移后端 目前为 MVC to Springboot MVC 后续UI JSP 将迁移到angular Caveats 1 后端不是无状态的 2 会话对象中存储了大量
  • 在带有 Protocol Buffers 的项目中使用 Proguard 有什么特点?

    我有一个使用 Google Protocol Buffers 的项目 一旦我尝试用 ProGuard 对其进行混淆 似乎 protobuf 会导致问题 我将所有自己的类打包成mybuildedclasses jar 谷歌代码被打包成prot
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • HTTP 状态 405 - 此 URL java servlet 不支持 HTTP 方法 POST [重复]

    这个问题在这里已经有答案了 我无法使页面正常工作 我有要发布的表单方法和我的 servlet 实现doPost 然而 它不断地向我表明我并不支持POST方法 我只是想做一个简单的网站并将值插入到我的 MySQL 数据库中 type Stat
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • Collections.sort(list) 和 list.sort(Comparator) 之间的区别

    有什么理由让我应该选择Collections sort list 方法而不是简单地调用list sort 内部Collections sort只是调用sort的方法List无论如何 上课 令人惊讶的是几乎每个人都告诉我使用Collectio
  • 如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

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

随机推荐

  • 使用 Box Windows SDK v2 库对 C# 桌面应用程序中的 Box 进行身份验证

    看起来这应该是一件简单的事情 但我找不到示例或足够详尽的文档来弄清楚 我有一个 C 桌面应用程序 我想通过 Box API 与 Box 集成 我认为使用 Box Windows SDK v2 for NET 将是最佳选择 有人能给我指一个适
  • Php:检查电子邮件内容是否为垃圾邮件

    我正在创建一个新闻通讯功能 允许用户发送电子邮件 由于存在恶意人员想要发送垃圾邮件 因此我希望能够检查并查看创建的邮件是否是垃圾邮件 我已经研究了几种不同的方法 例如尝试垃圾邮件杀手 但您需要完整的电子邮件 而我稍后才会得到 或者您需要安装
  • 即使文件不存在,为什么 SELECT INTO OUTFILE 也会给出文件存在错误?

    该文件肯定不存在 但我还是收到错误 I do rm tmp records materialized view txt mysql gt SELECT FROM records materialized view INTO OUTFILE
  • AngularJS:如何获取模板的 $location.path

    我需要模板中 url 的当前路径 location path 的内容 但不是通过控制器 因为我有很多控制器 并且我不想重复声明 scope currentUrl location path 感谢您的建议 AngularJS 模板只能看到范围
  • 用于未定方程组的 C++ 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找一个 C 库来解决这样的不确定系统 q 是向量 w x y z 变量和 a b c d 常
  • 使用 RxJs groupBy 以对象作为键

    我正在尝试使用groupBy使用 RxJ 我需要使用对象作为键 如果我不这样做 我会使用例如这样的简单字符串 var types stream groupBy function e return e x x is a string 然后一切
  • php可以检测javascript是否打开吗?

    我有动态创建的页面 现在我想添加ajax功能 所以我想添加if语句来更改输出 if js is on echo js is on else echo js is off 有什么办法可以检测js是否与php一起打开吗 或者有什么方法可以通过
  • 使用运行时构造函数参数的 InheritanceBasedAopConfigurer

    我有一个由 Spring NET 上下文拥有的 原型 类 它是使用带有运行时构造函数参数的 AutoProxy 创建的 它像这样被实例化 var context ContextRegistry GetContext var myClass
  • 画布清弧

    如何覆盖 HTML5 画布弧 我认为这段代码可以工作 但它在它周围留下了一个边框 尽管事实上它的值完全相同 只是颜色不同 我是否缺少边框属性
  • 我可以重写整个 git 存储库的历史记录以包含我们忘记的内容吗?

    我们最近完成了从 Mercurial 到 Git 的转换 一切都很顺利 我们甚至能够获得使存储库中的所有内容看起来 工作相对正确所需的转换 我们添加了一个 gitignore并开始了 然而 一旦我们合并 使用任何旧的功能分支 我们就会遇到一
  • 给定节点名称,获取另一个节点的子节点

    我有一个像这样的 XML
  • Nuxt async fetch() 创建多个实例?重复调用 fetch()

    我有一个简单的BasePreviewImage需要从内部 API 异步获取 Array Buffer 的组件 然而 看来async fetch 尽管组件本身被破坏 但每个创建的实例都会被调用 Example
  • Django 应用程序中的版本号

    我正在开发一个 Django 应用程序 我想显示应用程序的版本 以便发现错误的人知道应用程序的版本并可以提供更好的错误报告 是否有一种普遍接受的方法来在 Django 中存储版本号 我的意思是我的应用程序的版本 而不是 Django 我一直
  • 如何跟踪表中数据的变化?

    我有一个简单的问题 如何跟踪 SQL Server 表中行的更改 这是我想要的一个例子 Table Users Columns 姓名 地址 用户名 用户类型 Row 1 克里斯托弗 123假街 情人1234 1 我如何跟踪用户将 Chris
  • ctypes 段错误 仅适用于 OSX

    我使用 ctypes 在 Python 中创建了一个非常简单的 C 库绑定 它所做的只是接受一个字符串并返回一个字符串 我在Ubuntu上进行了开发 一切看起来都很好 不幸的是 在 OSX 上完全相同的代码失败了 我完全被难住了 我整理了一
  • PHPExcel 创建/样式/保存 PDF 文档

    我在几个项目中使用 PHPExcel 库 并且喜欢它提供的功能 目前 我需要另存为 PDF 发现 PHPExcel 可以做到这一点 但我发现很难找到有关该过程的一些示例或文档 以下是我找到的链接 http phpexcel codeplex
  • 跟踪 Zaber 设备移动时的位置

    我正在编写一个 LabVIEW VI 来移动 Zaber 线性执行器 并且我想在设备移动时每隔几毫秒记录一次设备的位置 我已经安装了Zaber 的 LabVIEW 驱动程序 http www zaber com wiki Software
  • CloudKit fetchRecordChangesOperation 给出“AppDefaultZone 不支持同步语义”

    我使用 CKFetchRecordChangesOperation 和 CKFetchRecordsChangeToken 来获取更改 它告诉我 AppDefaultZone 不支持同步语义 这是有问题的代码 void downloadSe
  • 混合 Razor 和 Javascript 代码

    我对如何混合 razor 和 js 感到非常困惑 这是我目前坚持的功能
  • 如何处理 Java BigDecimal 中的舍入错误

    我正在与开源项目 axil 合作 该项目在java应用程序内部实现了脚本引擎 并且在尝试利用BigDecimal的舍入时遇到了一个主要的障碍 BigDecimal 似乎正在将我的输入转换为科学记数法 然后将我传递的精度应用于数字的 SN 表