我是靠谱客的博主 如意绿茶,最近开发中收集的这篇文章主要介绍bigdecimal的加减乘除,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

三、方法描述
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。
BigDecimal a = new BigDecimal(“1”);
BigDecimal b = new BigDecimal(“2”);
BigDecimal c = new BigDecimal(“1”);
int result1 = a.compareTo(b);
int result2 = a.compareTo©;
int result3 = b.compareTo(a);
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);

}
复制代码
打印结果是:-1、0、1,即左边比右边数大,返回1,相等返回0,比右边小返回-1。
设置小数点精确度:setScale(int)

 设置保留小数点精确度并添加保留方式(直接加1或者四舍五入):setScale(int, int)

???3是保留小数,ROUND_HALF_UP是四舍五入,此参数的其他值请查看文章:

http://www.bdqn.cn/news/201311/11834.shtml

???这个例子你期望的是0.219,但是你实际会得到0。为什么呢?这就是保留精确度问题了,a是一个整数,运算时把结果当作整数取了,那就是0了。所以,应该按下面的运算:

???String a = “1”;
String b = “4.56”;
BigDecimal aBD = new BigDecimal(a).setScale(3);
BigDecimal bBD = new BigDecimal(b).setScale(3);
BigDecimal resultBD = aBD.divide(bBD).setScale(3, java.math.BigDecimal.ROUND_HALF_UP);
???这样,你就会得到一个正确的值了。

???还有一个需要注意的点,计算结果,如例子中的resultBD一定要设置其setScale的第二个参数,不然会报错。如果计算结果没有按某个方式进行截断,那么机器就不知道如何去取这个结果了,因此报错。

BigDecimal.setScale();//用于格式化小数点

setScale(1);//表示保留以为小数,默认用四舍五入方式

setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3

setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4

setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍

最后

以上就是如意绿茶为你收集整理的bigdecimal的加减乘除的全部内容,希望文章能够帮你解决bigdecimal的加减乘除所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部