,,基于BigDecimal.setScale的用法小结

,,基于BigDecimal.setScale的用法小结

这篇文章主要介绍了基于大小数。setScale的用法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.BigDecimal num 1=new BigDecimal(2.225667);//这种写法不允许,会造成精度损失

2.BigDecimal num 2=new BigDecimal(2);//这种写法是可以的

3.BigDecimal num=new BigDecimal(' 2.225667 ');//一般都会这样写最好

count计数=数字。scale();

系统。出去。println(计数);//6 返回的是小数点后位数

好了,下面开始正式介绍知识点啦~~~~~~

1. ROUND_DOWN

BigDecimal b=new BigDecimal(' 2.225667 ').setScale(2,BigDecimal .四舍五入);

系统。出去。println(b);//2.22 直接去掉多余的位数

2. ROUND_UP

BigDecimal c=new BigDecimal(' 2.224667 ').setScale(2,BigDecimal .ROUND _ UP);

系统。出去。println(c);//2.23 跟上面相反,进位处理

3. ROUND_CEILING

天花板(向上),正数进位向上,负数舍位向上

BigDecimal f=new BigDecimal(' 2.224667 ').setScale(2,BigDecimal .圆形_天花板);

系统。出去。println(f);//2.23 如果是正数,相当于BigDecimal .围捕

BigDecimal g=new BigDecimal('-2.225667 ').setScale(2,BigDecimal .圆形_天花板);

系统。出去。println(g);//-2.22 如果是负数,相当于BigDecimal .向下舍入

4. ROUND_FLOOR

地板(向下),正数舍位向下,负数进位向下

BigDecimal h=new BigDecimal(' 2.225667 ').setScale(2,BigDecimal .ROUND _ FLOOR);

系统。出去。println(h);//2.22 如果是正数,相当于BigDecimal .向下舍入

BigDecimal I=new BigDecimal('-2.224667 ').setScale(2,BigDecimal .ROUND _ FLOOR);

系统。出去。println(一);//-2.23 如果是负数,相当于BigDecimal .四舍五入

5. ROUND_HALF_UP

BigDecimal d=new BigDecimal(' 2.225 ').setScale(2,BigDecimal .ROUND _ HALF _ UP);

系统。出去。println(' ROUND _ HALF _ UP ' d);//2.23 四舍五入(若舍弃部分=.5,就进位)

6. ROUND_HALF_DOWN

BigDecimal e=new BigDecimal(' 2.225 ').setScale(2,BigDecimal .ROUND _ HALF _ DOWN);

系统。出去。println(' ROUND _ HALF _ DOWN ' e);//2.22 四舍五入(若舍弃部分.5,就进位)

7. ROUND_HALF_EVEN

BigDecimal j=new BigDecimal(' 2.225 ').setScale(2,BigDecimal .圆形一半偶数);

系统。出去。println(j);//2.22 如果舍弃部分左边的数字为偶数,则作向下舍入

BigDecimal k=new BigDecimal(' 2.215 ').setScale(2,BigDecimal .圆形一半偶数);

系统。出去。println(k);//2.22 如果舍弃部分左边的数字为奇数,则作四舍五入

系统。出去。println(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ');

系统。出去。println(' 4.05:' new BigDecimal(' 4.05 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.05:向下4.0

系统。出去。println(' 4.15:' new BigDecimal(' 4.15 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.15: 4.2以上

系统。出去。println(' 4.25:' new BigDecimal(' 4.25 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.25:向下4.2

系统。出去。println(' 4.35:' new BigDecimal(' 4.35 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.35: 4.4以上

系统。出去。println(' 4.45:' new BigDecimal(' 4.45 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.45:向下4.4

系统。出去。println(' 4.55:' new BigDecimal(' 4.55 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.55: 4.6以上

系统。出去。println(' 4.65:' new BigDecimal(' 4.65 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//4.65:向下4.6

系统。出去。println(' 3.05:' new BigDecimal(' 3.05 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.05:向下3.0

系统。出去。println(' 3.15:' new BigDecimal(' 3.15 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.15: 3.2以上

系统。出去。println(' 3.25:' new BigDecimal(' 3.25 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.25:向下3.2

系统。出去。println(' 3.35:' new BigDecimal(' 3.35 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.35: 3.4以上

系统。出去。println(' 3.45:' new BigDecimal(' 3.45 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.45:向下3.4

系统。出去。println(' 3.55:' new BigDecimal(' 3.55 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.55: 3.6以上

系统。出去。println(' 3.65:' new BigDecimal(' 3.65 ').setScale(1,BigDecimal .ROUND _ HALF _ EVEN));//3.65:向下3.6

8.ROUND_UNNECESSARY

BigDecimal l=new BigDecimal(' 2.215 ').setScale(3,BigDecimal .ROUND _不必要);

系统。出去。println(l);

//断言请求的操作具有精确的结果,因此不需要舍入。

//如果对获得精确结果的操作指定此舍入模式,则抛出算术异常。

补充知识:BigDecimal中divide方法注意问题

BigDecimal中划分方法抛异常:

非终止十进制扩展;没有精确可表示的小数结果

在使用

BigDecimal rate=new BigDecimal(1).divide(new BigDecimal(3));

时抛异常:

非终止十进制扩展;没有精确可表示的小数结果

原来是在做除法的时候出现了无限不循环小数如:0.333333333333

解决方案

在做做除法的时候指定保留的小数的位数:

BigDecimal rate=new BigDecimal(1).divide(new BigDecimal(3),6,BigDecimal .ROUND _ HALF _ UP);

以上这篇基于大小数。setScale的用法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: