
java大浮点数BigDecimal介绍
在BigDecimal类里面提供有如下的构造函数:
构造函数一:
public BigDecimal(String val);
构造函数二:
public BigDecimal(double val)
BigDecimal本身支持基础的数学计算,可以使用BigDecimal还有一个非常重要的目的,可以利用它来实现准确的四舍五入操作。
之前使用过Math.round()实现过四舍五入操作,但是这种操作有一个问题,所有的小数位都四舍五入了。加入一家公司年收入按照亿进行计算,今年收入:3.45678亿,按照Math.round()的做法,相当于只有3亿了。
遗憾的是BigDecimal类里面没有直接提供有四舍五入的操作支持,可是可以利用除法计算实现:
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
BigDecimal divisor是被除数;
int scale是保留的小数位;
int roundingMode是进位模式;
@see #ROUND_UP
* @see #ROUND_DOWN
* @see #ROUND_CEILING
* @see #ROUND_FLOOR
* @see #ROUND_HALF_UP
* @see #ROUND_HALF_DOWN
* @see #ROUND_HALF_EVEN
* @see #ROUND_UNNECESSARY
接下来我们来看一下进位模式的例子:
/**
* 实现准确位数的四舍五入操作
* @param num
* @param scale
* @return
*/
public static double round(double num,int scale) {
BigDecimal bigDecimal = new BigDecimal(num);
BigDecimal bigDecimal2 = new BigDecimal(1);
return bigDecimal.divide(bigDecimal2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
在程序main方法中编写测试类查看程序结果:
此类操作的功能在日后的开发之中一定要会使用,属于工具类的支持范畴。
