Java将double类型的四舍五入到两小数

直接调用getDecimal方法,参数num是要四舍五入前的double类型的数字!

例如:

  double number =23.65558;
  log.info(number "四舍五入后为:==>" Convert.getDecimal(number));

 控制台输出: 23.65558四舍五入后为:==>23.66

 

 public static double getDecimal(double num) {
   if (Double.isNaN(num)) {
    return 0;
   }
   BigDecimal bd = new BigDecimal(num);
   num = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
   return num;
 }

 

其中BigDecimal 是不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

 

方法:setScale(int newScale,int roundingMode)

参数 newScale - 要返回的 BigDecimal 值的标度。roundingMode - 要应用的舍入模式。返回 一个 BigDecimal,其标度为指定值,其非标度值可以通过此 BigDecimal 的非标度值乘以或除以十的适当次幂来确定。

 

ROUND_HALF_UP

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。注意,这是我们大多数人在小学时就学过的舍入模式。


你可能感兴趣的:(java,UP)