public static void main(String[] args) {
double num = About.halfUpDouble(12.3425, 3);
System.out.println(num);
}
public static double halfUpDouble(double num, int scale) {
//注意,下面的Double必须先转为String再转为BigDecimal,否则转成的BigDecimal会失真.比如
//将12.3445转为BigDecimal可能就是12.3444999999.......(省略一大堆9),此时如果去除的
//话会出现与期望不符合的结果
BigDecimal b = new BigDecimal(new Double(num).toString());
final BigDecimal one = new BigDecimal("1");
//曾经考虑过用BigDecimal.round(),但round好像无法控制小数点位数级别的四舍五入,只好用
//除以一这种龌龊的方法,呵呵
return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();
}