Non-terminating decimal expansion; no exact representable decimal result

完美解决Non-terminating decimal expansion; no exact representable decimal result.异常 我们在使用BigDecimal进行精确计算时常常会出现Non-terminating decimal expansion; no exact representable decimal result.异常。 阅读详情

由于需要处理精度比较高的浮点数,所以弃用double类型,改用BigDecimal类来进行数值处理。

在加减乘时都没有出现问题,但是到除法运算时,提示了如下错误:

大概的意思是“无法结束的除法表达式;没有精确的除结果”。我当时输入的10/3,结果应该是3.3333....333。

 

于是在网上找资料,发现我原来的处理方式有问题。

BigDecimal num1 = new BigDecimal("10");

BigDecimal num2 = new BigDecimal("3");

BigDecimal num3 = num1.divide(num2);

 

其实devide的函数定义如下

BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;

scale为小数位数;

roundingMode为小数模式;

ROUND_CEILING
如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。
ROUND_DOWN
从不在舍弃(即截断)的小数之前增加数字。
ROUND_FLOOR
如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。
ROUND_HALF_DOWN
若舍弃部分> .5,则作 ROUND_UP;否则,作 ROUND_DOWN 。
ROUND_HALF_EVEN
如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作 ROUND_HALF_DOWN 。
ROUND_HALF_UP
若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_UNNECESSARY
该“伪舍入模式”实际是指明所要求的操作必须是精确的,,因此不需要舍入操作。
ROUND_UP
总是在非 0 舍弃小数(即截断)之前增加数字。

写成如下便可通过

BigDecimal num3 = num1.divide(num2,10,ROUND_HALF_DOWN);

 

LIGGGHTS开源离散元仿真:从基础安装到高级应用实战 本文详细介绍了LIGGGHTS开源离散元仿真软件的基础安装、脚本编写及高级应用实战。从颗粒自由落体模拟到工业级复杂系统建模,涵盖CFD-DEM耦合、高性能计算优化等关键技术,帮助用户快速掌握这一强大的颗粒仿真工具。特别适合需要处理颗粒系统仿真的科研人员和工程师。 阅读详情

相关推荐

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2107

【异常解决】Non-terminating decimal expansion; no exact representable decimal result.

原因是 Java 中使用 BigDecimal 做除法运算的时候,值有可能是无限循环的小数,所以我们就需要在 divide 方法中传递第二个参数,来定义小数点后的精确位数,否则在不整除的情况下,结果是无限循环的小数,就会抛出上面这个异常。如果结果为正数,则舍入行为与 ROUND_UP 相同;如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。

No8g攻城狮的博客 2万+

汽车级智能栅极驱动器深度解析 | 连载03:功能框图与工作模式详解

在前两期连载中,我们分析了DRV871x-Q1的产品架构、引脚配置和电气特性。本期我们将深入探讨DRV871x-Q1的功能框图和工作模式,这是理解芯片内部工作机制的关键。通过分析功能框图,我们能够清晰地了解各功能模块之间的关系和信号流向;通过工作模式分析,我们能够掌握芯片在不同应用场景下的配置方法。这些知识对于系统设计和故障排查都至关重要。

VehSwHwDeveloper的博客 1098

BigDecimal除法后保留两位小数

BigDecimal numBigDecimal=new BigDecimal(5.33); numBigDecimal=ConvertNumber(numBigDecimal,3,2);//调用,5.33/3后保留两位小数1.7766666=1.78 //BigDecimal 截取小数位,四舍五入 public BigDecimal ConvertNumber(BigDecimal bi

haibin_hu的专栏 11万+

[软考]系统架构设计师 备考经验分享(一) - 备考计划篇

前言 上周末刚刚结束了软考架构师的考试,自我感觉考的还可以,大概率是过了。 两次参加软考,一次中级嵌入式,一次高级架构师,都是备考不到两个月时间,尤其是架构师这次考试内容和本职工作有不小的差别,并且需要同时备考三个科目,在高强度地备考中感觉是摸索出到了一点软考的技巧与经验。 打算趁还记得,赶紧写几篇文章做下梳理总结,算是给将来自己考系分、高项或者其他考试做个记录,也希望能够帮到正在备考的大家。 先把第一步,个人的备考计划分享给大家。 自身情况分析 首先,请大家一定先明确三个问题,这三个问题会直接影响到你的

_ 6404

特征提取神操作,登上Nature!计算速度狂提300%!

登上Nature!作者提出CVOCA,一种能同时处理数据的幅度和相位信息的卷积模型,在性能远超SOTA的同时,计算速度更是狂飙300%!实际上,作为机器学习和深度学习的核心技术,特征提取一直都是研究的热门!它直接影响着模型的准确性、计算效率、可解释性……同时,它也是我们改模型涨点,最好操作的部分!因为可切入点的真的非常之丰富,不管是轻量化、多尺度、时域与频域结合等,都能使模型性能得到提升!

2401_82426425的博客 4036

Non-terminating decimal expansion: no exact representable decimal result.异常解决办法

出现这个异常的原因在于 BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我们在做除法时,没有指定舍入模式,并且无法表示为准确的结果,因此抛出了这个异常(java.lang.ArithmeticException)。这里要根据业务选择合适的方法没有最好的只有最适合的。本文采用的是在divide运算时指定保留两位小数点的方法解决。

weixin_37549398的博客 8308

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 597

Non-terminating decimal expansion; no exact representable decimal result.

BigDecimal 用于高精度的数学计算,这个异常翻译。RoundingMode.HALF_UP 表示四舍五入。意思就是这个除法除不尽,会得到一个无限小数,导致异常。格式换转换为字符串,设置保留精度。表示保留2位小数,四舍五入。

不积跬步,无以至千里 4693

基于DeepFashion2数据集的服装检测系统:YOLOv11实现与UI界面开发

80万张高质量服装图片13个服装类别:短袖上衣、长袖上衣、短袖外套、长袖外套、背心、短裤、长裤、短裙、长裙、袜子、帽子、鞋、包包每张图片包含边界框、分割掩码、landmarks等标注多样化的场景:商业图片、街拍图片、消费者图片更高效的Backbone网络改进的特征金字塔网络(FPN)自适应训练样本分配策略更精确的损失函数以下是YOLOv11的模型定义:python复制下载# 模型参数self.nc = nc # 类别数。

YOLO 455

【图像超分】论文复现:Pytorch实现SRCNN!保姆级复现教程!提供完整代码和最优权重模型(x2、x3、x4)!科研级论文曲线图!计算平均PSNR和SSIM!代码Windows和Linux都可用!

由于很多同学反应没用过jupyter notebook,更习惯用pycharm项目的形式跑代码。于是,本文将用pycharm项目的形式,重新复现SRCNN!【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4702

Non-terminating decimal expansion; no exact representable decimal result异常的解决方法

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法 今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; n...

成长笔记 8万+

LSTM在交通流量预测中的应用:优化城市交通管理

我们使用的数据集来自某个城市的交通监测系统,包含多个监测点在不同时间段内的交通流量记录。每个监测点的数据包括时间戳、交通流量、天气状况和道路状态等信息。

斌擎科技 1256

Non-terminating decimal expansion; no exact representable decimal result

公司项目数据须要处理精度比较高的浮点数,因此弃用double类型,改用BigDecimal类来进行数值处理。但在除法运算得时候发生异常,如下: # Non-terminating decimal expansion; no exact representable decimal result 大概的意思是“没法结束的除法表达式;没有精确的除结果”。我当时输入的10/3,结果应该是3.3333…333 解决方案: 通过BigDecimal做除法运算时,在不整除出现无限循环小数时,就会报异常,解决办法就是di

CharlesYooSky的博客 581

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Non-terminating decimal expansion; no exact representable decimal result.

今天使用BigDecimal计算时报了这个错误 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(BigDecimal.java:1616) at sun.reflect.N...

G_whang的博客 3262

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Non-terminating decimal expansion; no exact representable decimal result 问题解决

今天帮同事测试代码的时候,发现了一个bug问题,bug如下: BUG java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. Bug出现过程 在计算手续费收取比例的时候同事直接将BigDecimal类型使用divide(除法运算)之后的数据做 multiply 乘法运算,然后我将投放金额设为10亿,手续费设为六十六万的时候,此时比例0.00066.

喜欢吃糖丶的博客 9539

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

出现 Non-terminating decimal expansion; no exact representable decimal result 问题的解决方法

代码中使用了 BigDecimal 做精确计算,在做除法时,系统抛出 “ Non-terminating decimal expansion; no exact representable decimal result”。 1 分析 BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我

读万卷书,行万里路 11万+

出现 Non-terminating decimal expansion; no exact representable decimal result 问题的解决方法

代码中使用了 BigDecimal 做精确计算,在做除法时,系统抛出 “ Non-terminating decimal expansion; no exact representable decimal result”。 1 分析 BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我们在做除法时,没有指定舍入模式,并且无法表示为准确的结果,因此抛出了这个异常(java.lang.Arithmet

qq_34412985的博客 8796

java Non-terminating decimal expansion; no exact representable decimal result. 异常的解决方法

一.问题 JAVA程序出现异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。 报错的语句是: profitAmount().divide(totalProfit); 二.原因 BigDecimal 是不可变的、任意精度的...

chu 1万+

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

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

weixin_73060959的博客 939
上一篇: warning C4090: 'initializing' : different 'const' qualifiers
下一篇: SWT模拟鼠标操作例子
lopper
博客等级 码龄22年 61粉丝 109原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值