概述
1:问题场景:在金额的计算中, 会出现精度丢失的情况。
数字计算时,计算机会将数字转换为最近似的二进制,在进行计算,这就会导致计算结果精度不正确。
例如:0.1+0.2 =0.30000000000000004 。这个问题在众多编程语言中都出现过。
2:解决办法:这个问题在java中是使用java.math.BigDecimal进行计算。
3:常用方法:加减乘除,比较大小,是否为0,保留n为小数,向上向下,四舍五入。
A : 加减乘除
BigDecimal num= new BigDecimal ("10");
num.add(num);
num.subtract(num);
num.multiply(num);
num.divide(num);
B :比较大小,是否为0
num.compareTo(num)==1
这个方法结果有-1 ,0 ,1 分别表示小于,大于,等于
BigDecimal.ZERO 则表示0
C:保留n位小数,向上向下取整,四舍五入,当出现无限循环小数时使用
setScale的第一个参数是小数位数, 这个示例是保留2位小数, 后面是四舍五入规则.
直接移除n位:
num.setScale(n,BigDecimal.ROUND_DOWN)
进位:
num.setScale(n,BigDecimal.ROUND_UP)
四舍五入,5进位
num.setScale(n,BigDecimal.ROUND_HALP_UP)
四舍五入,5舍弃
num.setScale(n,BigDecimal.ROUND_HALP_DOWN)
D:当小数位过长出现科学计算法时,去除末尾0,方法:stripTrailingZeros() 。不显示科学计算法 转换string。
num.stripTrailingZeros().toString()
最后
以上就是迷你美女为你收集整理的java.math.BigDecimal 的使用的全部内容,希望文章能够帮你解决java.math.BigDecimal 的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复