BigDecimal概述
BigDecimal是处理高精度的浮点数运算的常用的一个类,用来对超过16位有效位的数进行精确的运算。
BigDecimal有哪些属性和方法(加减乘除)
1.add(BigDecimal) 相加,返回BigDecimal对象
2.subtract(BigDecimal) 相减 返回BigDecimal对象
3.multiply(BigDecimal) 相乘 返回BigDecimal对象
4.divide(BigDecimal) 相除 返回BigDecimal对象
eg:(注意精度)
BigDecimal bigDecimal = BigDecimal.valueOf(lateRepaymentContinual.getRepayInterestAmount()).divide(new BigDecimal("4"),0, BigDecimal.ROUND_UP);
5.abs() 将BigDecimal的值转化为绝对值
6.doubleValue() 将BigDecimal的值转换成双精度数
7.stripTrailingZeros() 去掉小数点后的0
8.toPlainString() 避免出现科学计数法
9.floatValue() 将BigDecimal的值转换成单精度数
10.longValue() 将BigDecimal的值转换成长整数
11.intValue() 将BigDecimal的值转换成整数
12.negate() 相反数
13.pow(int n) 幂次方,如BigDecimal.valueOf(2).pow(3)的值为8
eg:
BigDecimal.valueOf(2).pow(3) 值为8
向上向下取整
setScale(0, BigDecimal.ROUND_UP)
setScale(0, BigDecimal.ROUND_DOWN)
什么时候可能会出现科学计数法显示
当需要将BigDecimal中保存的浮点数值打印出来,特别是在页面上显示的时候,就有可能遇到预想之外的科学技术法表示的问题。
一般直接使用 BigDecimal.toString()方法即可以完成浮点数的打印
直接输出:
System.out.println( new BigDecimal("2275344402.000").toString());
打印的结果为:2.272444402E9.000
去掉小数点后的0并且打印正常的数字
System.out.println( new BigDecimal("2275344402.000").stripTrailingZeros().toPlainString());
打印的结果为:2272444402