数据保留至有效位数,有时候这是一个很不好解决的问题。平时我们的需求很多都是希望把数据保留至小数点后一位,但是我们计算的时候就会发现很多数据变成,譬如0.017保留小数点后一位就变成0.0了,但是我们自动应该把它变成0.02才是正确的。所以自己写了一个解决办法可以将数据自动保留至数据有效的位数
private final static Integer NUMDOUBLE = 1;
public static Double keepDouble(Double f){
/*1.先判断当前数据是否为0*/
Integer zeroRe = MathCal.compare(f, 0.0);
switch (zeroRe) {
case 1 : /*数据为0,直接将数据保留小数点后一位*/
return new BigDecimal(f).setScale(NUMDOUBLE, BigDecimal.ROUND_HALF_UP).doubleValue();
default: /*数据不为0,将数据保留至有效位数*/
Integer digits = KeepDecimals.NUMDOUBLE;/*将数据设置默认其实保留小数点后一位*/
Integer re = KeepDecimals.keepDouble(f, digits, 0);/*先对数据进行小数点后一位保留,与0判断结果是否为0*/
while(re == 1){
digits++;
re = KeepDecimals.keepDouble(f, digits, 0);
}
return new BigDecimal(f).setScale(digits, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}