为了进行double类型的精确计算,我使用了bigdecimal,但是在while循环中出现无限循环的问题,
每次循环开始double类型的数都会被重新初始化,代码如下
import java.math.BigDecimal;
public class SomeTry {
public static void main(String[] args) {
// TODO Auto-generated method stub
double fraction = 0.36768;
while(fraction > 0){
fraction = mul(fraction, 2);
if(fraction >= 1){
fraction = sub(fraction, 1);
}
}
}
public static double mul(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
}
public static double sub(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.subtract(bd2).doubleValue();
}
}
求大神帮忙,谢谢!