96SEO 2026-02-20 00:10 7
java中BigDecimal的介绍及使用BigDecimal格式化BigDecimal常见问题java中BigDecimal的介绍及使用(二)

文章一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros()
scale()2.4、intValue()2.5、intValueExact()2.6、unscaledValue()2.7、remainder(BigDecimal
divisor)2.8、divideAndRemainder(BigDecimal
三、进阶3.1、获取BigDecimal整数部分、小数部分、整数位数、小数位数
《java中BigDecimal的介绍及使用BigDecimal格式化BigDecimal常见问题
中主要介绍了BigDecimal的加减乘除运算及格式化方面的使用本篇主要介绍其他相关的内容。
加减乘除等常用的方法在上一篇中已经提过本篇不再重复写主要讲一下其他可能用到的方法
stripTrailingZeros()去除小数尾部所有的0并返回一个BigDecimal类型的数据,不能保证不是科学计数法int
scale()该方法返回此BigDecimal的小数位数。
对于零或正值小数位数是小数点右边的位数。
对于负值数字的未标度值乘以十即标度取反的幂。
int
intValue()返回int数值小数点后面的数值直接省略int
intValueExact()返回int数值小数点后面的数值直接省略若BigDecimal对象的值超出int类型取值范围抛出异常BigInteger
toBigInteger()返回BigInteger数值BigInteger理论上是负无穷到正无穷之间BigInteger
unscaledValue()此方法返回一个BigInteger其值是此BigDecimal值的未缩放值。
divide(BigDecimal)BigDecimal对象中的值相除返回BigDecimal对象。
该方法可能会遇到无限精度问题会抛出异常使用时需注意。
详细见上一篇文章的无限精度的坑BigDecimal
divisor)返回当前BigDecimal对象除以divisor后的余数。
被除数divisor不能是0否则抛出异常BigDecimal[]
divisor)返回当前BigDecimal对象除以divisor后的商和余数以数组形式返回。
被除数divisor不能是0否则抛出异常
2,147,483,647long-9223372036854775808~9223372036854775807
任意大的整数其取值范围在负无穷到正无穷之间原则上是只要你的计算机的内存足够大可以有无限位的,
去除小数尾部所有的0并返回一个BigDecimal类型的数据,不能保证不是科学计数法
BigDecimal(10.10);System.out.println(a.stripTrailingZeros().toPlainString());//10System.out.println(b);
//100000System.out.println(b.stripTrailingZeros());
注意返回的值可能已经是个科学计数法了System.out.println(c.stripTrailingZeros().toPlainString());//10.1
}当stripTrailingZeros()返回科学计数法时可以通过toPlainString()方法不使用科学计数法进行输出。
BigDecimal(0);System.out.println(a.signum());//1System.out.println(b.signum());//-1System.out.println(c.signum());//0
对于零或正值小数位数是小数点右边的位数。
对于负值数字的未标度值乘以十即标度取反的幂。
注意当BigDecimal的对象为科学计数法时scale的值不一定等于小数位数
BigDecimal(-1234500);System.out.println(a.scale());//2System.out.println(b.scale());//1System.out.println(c.scale());//0System.out.println(dd.scale());//-12345000System.out.println(d.stripTrailingZeros()d.stripTrailingZeros().scale());//-1.2345E6
注意当BigDecimal的对象为科学计数法时scale的值不一定等于小数位数
2,147,483,647所以当超过这个数值时会从负值开始继续转换可以使用intValueExact()方法当超出int取值范围后会抛异常
BigDecimal(2999999999.99);BigDecimal
BigDecimal(2147483649);System.out.println(a.intValue());//-1294967297System.out.println(b.intValue());//-2147483647
返回int数值小数点后面的数值直接省略若BigDecimal对象的值超出int类型取值范围抛出异常
BigDecimal(2147483648);BigDecimal
BigDecimal(2147483648);System.out.println(a.intValue());//-2147483648System.out.println(b.intValueExact());//抛异常
java.math.BigDecimal.intValueExact(BigDecimal.java:3152)at
com.ruoyi.common.utils.money.Test1.main(Test1.java:12)2.6、unscaledValue()
此方法返回一个BigInteger其值是此BigDecimal值的未缩放值。
BigDecimal(0.32);System.out.println(a.unscaledValue());//10235System.out.println(b.unscaledValue());//32
返回当前BigDecimal对象除以divisor后的余数。
被除数divisor不能是0否则抛出异常
BigDecimal(10);System.out.println(a.remainder(new
BigDecimal(10.23);System.out.println(a.remainder(new
0.23System.out.println(a.remainder(new
BigDecimal(0)));//被除数不能是0否则抛出异常
2.8、divideAndRemainder(BigDecimal
返回当前BigDecimal对象除以divisor后的商和余数以数组形式返回。
被除数divisor不能是0否则抛出异常
BigDecimal(2));System.out.println(Arrays.asList(arr));//[5,
BigDecimal(2));System.out.println(Arrays.asList(arr));//[5.00,
BigDecimal(2.000));System.out.println(Arrays.asList(arr));//[5,
0.230]System.out.println(a.divideAndRemainder(new
BigDecimal(0)));//被除数不能是0否则抛出异常
3.1、获取BigDecimal整数部分、小数部分、整数位数、小数位数
个人觉得用这种方式获取BigDecimal整数部分、小数部分、整数位数、小数位数比较方便
String.valueOf(a.toBigInteger());//整数部分String
money.split(\\.).length1?:money.split(\\.)[1];
//小数部分System.out.println(integer);//10System.out.println(point);//23
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback