-
Float和Double混用:
比如下面的代码:要么都转化为float(2.8f),要么都转换为double:
float f1 = 2.8f;
if(f1 == 2.8){
//do something
}
-
Float或者Double的计算:
比如下面的代码:应该转换为long/int进行计算,根据小数点的位数决定乘以多大的数;
double d1 = 2.8;
double d2 = 1.8;
if((d1-d2) == 1){
//do something;
}
比如:
double d1 = 2.8;
double d2 = 1.8;
if((Math.round(d1*100)-Math.round(d2*100)) == (1*100)){
//do something
}
-
比较的精度问题:
比如下面的代码:超出范围后,比较是错误的;用BigDecimal可以增加精度;
double d1 = 2.8000000000000001;
double d2 = 2.8000000000000002;
if(d2>d1){
//do something
}
修改如下:
BigDecimal bd1 = new BigDecimal(“2.800000000000000001”);
BigDecimal bd2 = new BigDecimal(“2.800000000000000002”);
if(bd1.compareTo(bd2) == -1){
//do something
}