我是靠谱客的博主 热情便当,最近开发中收集的这篇文章主要介绍BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
BigDecimal的初始化
1、使用字符串 2、直接写数字
BigDecimal b1 = new BigDecimal(0.005);
BigDecimal b2 = new BigDecimal(1000000);
BigDecimal b3 = new BigDecimal(-1000000);
//尽量用字符串的形式初始化※
BigDecimal b11 = new BigDecimal("0.005");
BigDecimal b22 = new BigDecimal("1000000");
BigDecimal b33 = new BigDecimal("-1000000");
两种初始化对比结果:
※注意:使用Integer会丢失精度,这是为什么建议使用String来进行初始化的原因
BigDecimal四则运算法则
BigDecimal b1 = new BigDecimal(1);
BigDecimal b2 = new BigDecimal(2);
操作 | 公式 |
---|---|
加法 | b1.add(b2) |
减法 | b1.subtract(b2) |
乘法 | b1.multiply(b2) |
除法 | b1.divide(b2) |
加法add()
//创建一个BigDecimal对象
BigDecimal b1 = new BigDecimal(1);
BigDecimal b2 = new BigDecimal(2);
BigDecimal add = b1.add(b2);
注意:必须使用一个变量接收, 详情如下:
1、没有使用变量介绍的例子
2、使用变量接收
减法subtract()
BigDecimal subtract= b1.subtract(b2);
乘法multiply()
BigDecimal multiply = b1.multiply(b2);
除法divide()
计算机得出结果:
BigDecimal b1 = new BigDecimal(17);
BigDecimal b2 = new BigDecimal(7);
//舍入远离零的舍入模式(始终对非零舍弃部分前面的数字加1)
BigDecimal divide1 = b1.divide(b2,3,BigDecimal.ROUND_UP);
//接近零的舍入模式。(从不对舍弃部分前面的数字加1,即截短)
BigDecimal divide2 = b1.divide(b2,2,BigDecimal.ROUND_DOWN);
/**
* 接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;
* 如果为负,则舍入行为与 ROUND_DOWN 相同。
* 注意,此舍入模式始终不会减少计算值。
*/
BigDecimal divide3 = b1.divide(b2,2,BigDecimal.ROUND_CEILING);
/**
* 接近负无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;
* 如果为负,则舍入行为与 ROUND_UP 相同。
* 注意,此舍入模式始终不会增加计算值。
*/
BigDecimal divide4 = b1.divide(b2,2,BigDecimal.ROUND_FLOOR);
//四舍五入
BigDecimal divide5 = b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);
//向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
BigDecimal divide6 = b1.divide(b2,2,BigDecimal.ROUND_HALF_DOWN);
//向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
BigDecimal divide7 = b1.divide(b2,2,BigDecimal.ROUND_HALF_EVEN);
/**
* 断言请求的操作具有精确的结果,因此不需要舍入。
* 如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。
* 此模式下对于结果为无限小数的情况下会报错
*/
// BigDecimal divide8 = b1.divide(b2,2,BigDecimal.ROUND_UNNECESSARY);
结果:
BigDecimal比较大小
BigDecimal a = new BigDecimal(10);
BigDecimal b = new BigDecimal(5);
if (a.compareTo(b) == 0){
System.out.println("a = b");
}
if (a.compareTo(b) == -1){
System.out.println("a < b");
}
if (a.compareTo(b) == 1){
System.out.println("a > b");
}
if (a.compareTo(b) != 0){
System.out.println("a != b");
}
if (a.compareTo(b) != -1){
System.out.println("a >= b");
}
if (a.compareTo(b) != 1){
System.out.println("a <= b");
}
stripTrailingZeros()方法:去掉末尾0
BigDecimal bigDecimal = new BigDecimal("5.00000000");
System.out.println("不去掉零之前------->"+bigDecimal);
System.out.println("抹零------->"+bigDecimal.stripTrailingZeros());
运行结果:
toPlainString() 方法:转为普遍计数法输出
//科学计数法
BigDecimal bd = new BigDecimal("1.238761976E-10");
System.out.println(bd.toPlainString());
结果:
最后
以上就是热情便当为你收集整理的BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出的全部内容,希望文章能够帮你解决BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复