报错Non-terminating decimal expansion; no exact representable decimal result

server/2025/3/9 21:01:19/

异常代码:

java">BigDecimal.valueOf(100).divide(BigDecimal.valueOf(5)).setScale(2, RoundingMode.HALF_UP)

出现该错误的原因是:在调用 BigDecimal.divide() 方法时,除法运算的结果是一个无限不循环小数(例如 1/3 = 0.333...),而代码中未在除法运算阶段指定舍入模式(Rounding Mode),导致无法精确表示结果。

错误分析:

divide() 方法调用时未指定舍入模式。当除法无法得到精确结果时(例如 10/3 = 3.333...),BigDecimal 会抛出 ArithmeticException,提示 "Non-terminating decimal expansion"。

修复方法:

在除法运算时直接指定舍入模式和精度,而不是在除法之后才设置精度。修改后的代码如下:

java">BigDecimal.valueOf(100).divide(BigDecimal.valueOf(5), 2, RoundingMode.HALF_UP) .doubleValue()

改进点:

  1. 正确使用除法:通过 divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 方法,在除法阶段指定结果的小数位数和舍入模式,确保运算合法。
  2. 简化代码:合并 setScale(2, RoundingMode.HALF_UP) 到 divide() 方法中,减少冗余操作。

总结:

BigDecimal 的除法操作必须处理无限小数的情况。通过在 divide() 中直接指定精度和舍入模式,可以避免异常并确保计算结果的正确性。


http://www.ppmy.cn/server/173760.html

相关文章

1688按图搜索商品(拍立淘)API返回的数据结构

在使用1688的按图搜索商品(拍立淘)API时,API返回的数据通常是一个JSON格式的响应。以下是API返回数据的常见结构及其字段说明: 标准返回数据结构 {"code": 200, // 返回状态码,200表示成功"message&q…

FFmpeg-chapter7和chapter8-使用 FFmpeg 解码视频(原理篇和实站篇)

解码流程如下图 流程:首先,通过 avcodec_alloc_context3(nullptr) 分配一个 AVCodecContext 结构体,然后使用 avcodec_parameters_to_context 将参数复制到上下文中,接着通过 avcodec_find_decoder 查找指定的解码器,并…

Uniapp使用wxml-to-canvas进行动态页面转图片

参考文章链接:https://www.cnblogs.com/liangtao999/p/16719534.html 官方的链接:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/extended/component-plus/wxml-to-canvas.html 一、引入组件: 1、方法一&#…

文献阅读 | Nature Methods | SCENIC: 单细胞调控网络推断和聚类

文献介绍 文献题目: SCENIC: 单细胞调控网络推断和聚类 研究团队: Stein Aerts(比利时鲁汶大学) 发表时间: 2017-10-09 发表期刊: Nature Methods 影响因子: 25.0(2017年&#xff09…

【通义万相】蓝耘智算 | 开源视频生成新纪元:通义万相2.1模型部署与测评

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

从李佳琦团队看新型用工:灵活就业如何重构组织架构?

2022年“双11”期间,李佳琦直播间累计销售额突破115亿元(来源:新腕数据《2022双11直播电商战报》),其背后团队规模约400人,但全职员工仅占35%,其余65%为外包选品团队、兼职客服、第三方MCN机构人…

XML布局文件与常用View组件

XML布局文件与常用View组件 一、基础知识 1.1 XML布局简介 Android应用的用户界面是由View和ViewGroup对象的层次结构组成的。每个ViewGroup都是一个可以包含View对象的容器。XML布局文件提供了一种类似HTML的方式来描述这种视图层次结构。 1.2 常用布局属性 <!-- 常用…

AI学习有感

和前辈聊天&#xff0c;谈到了现在的ai技术&#xff0c;这里对那天的谈话进行总结&#xff1a; AI是无状态的 我们在使用ai时有时候会有一个错觉&#xff0c;认为和ai聊天久了&#xff0c;ai就会像人与人之间交流一样&#xff0c;会保留一种对聊天对象的认知状态&#xff0c;这…