java大浮点数BigDecimal介绍

java大浮点数BigDecimal介绍

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方法中编写测试类查看程序结果:

此类操作的功能在日后的开发之中一定要会使用,属于工具类的支持范畴。