java中double数据保留有效位数
数据保留⾄有效位数,有时候这是⼀个很不好解决的问题。平时我们的需求很多都是希望把数据保留⾄⼩数点后⼀位,但是我们计算的时候就会发现很多数据变成,譬如0.017保留⼩数点后⼀位就变成0.0了,但是我们⾃动应该把它变成0.02才是正确的。所以⾃⼰写了⼀个解决办法可以将数据⾃动保留⾄数据有效的位数
private final static Integer NUMDOUBLE = 1;
public static Double keepDouble(Double f){
/*1.先判断当前数据是否为0*/
Integer zeroRe = MathCalpare(f, 0.0);
switch (zeroRe) {
case 1 : /*数据为0,直接将数据保留⼩数点后⼀位*/
return new BigDecimal(f).setScale(NUMDOUBLE, BigDecimal.ROUND_HALF_UP).doubleValue();bigdecimal除法保留小数
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();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。