浮点数的比较
程序员文章站
2022-03-02 10:33:36
...
Java里浮点数不是精确的,很多数字只能近似。
如:0.1,只能接近,不能等于。
import java.math.BigDecimal;//import java.math.*;
public class Main0324 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=10;
int b=10;
System.out.println(a==b);//true
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//false
BigDecimal bd2=BigDecimal.valueOf(0.1);
BigDecimal bd3=BigDecimal.valueOf(1.0/10.0);
System.out.println(bd2.equals(bd3));//0.5
float d1=423443423f;
float d2=d1+1;
if(d1==d2) {
System.out.println("d1=d2");//等于
}
else {
System.out.println("d1!=d2");
}
System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5?
BigDecimal bd=BigDecimal.valueOf(1.0);//将bd 复制为1.0
bd=bd.subtract(BigDecimal.valueOf(0.1));//bd 减去0.1
bd=bd.subtract(BigDecimal.valueOf(0.1));//bd 减去0.1
bd=bd.subtract(BigDecimal.valueOf(0.1));//bd 减去0.1
bd=bd.subtract(BigDecimal.valueOf(0.1));//bd 减去0.1
bd=bd.subtract(BigDecimal.valueOf(0.1));//bd 减去0.1
System.out.println(bd);//0.5
}
}
**运行结果**
true
false
true
d1=d2
0.5000000000000001
0.5