Java使用BigDecimal保留double、float運算精度、保留指定位數有效數字、四捨五入
阿新 • • 發佈:2019-01-10
工具類
package ……;
import java.math.BigDecimal;
/**
* Created by kongqw on 2015/12/10.
*/
public final class BigDecimalUtil {
private BigDecimalUtil() {
}
/**
* 加法運算
*
* @param d1 d1
* @param d2 d2
* @return
*/
public static double add(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.add(b2).doubleValue();
}
/**
* 減法運算
*
* @param d1 d1
* @param d2 d2
* @return
*/
public static double sub(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.subtract(b2).doubleValue();
}
/**
* 乘法運算
*
* @param d1 d1
* @param d2 d2
* @return
*/
public static double mul(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.multiply(b2).doubleValue();
}
/**
* 除法運算
*
* @param d1 被除數
* @param d2 除數
* @param len 保留幾位有效小數
* @return
*/
public static double div(double d1, double d2, int len) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
// BigDecimal.ROUND_HALF_UP 舍入模式
return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 四捨五入操作
*
* @param d 要操作的數
* @param len 保留幾位有效數字
* @return
*/
public static double round(double d, int len) {
BigDecimal b1 = new BigDecimal(d);
BigDecimal b2 = new BigDecimal(1);
// 任何一個數字除以1都是原數字
// ROUND_HALF_UP是BigDecimal的一個常量,表示進行四捨五入的操作
return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}