最近在学java,写了些小程序,在比较浮点数时,发现明明相等的两个浮点数比较结果却不相等,两个不相等的比较结果却是相等,还以为程序写的有问题,改了半天,最后通过下断点,调试时才发现问题
于是,我上网查资料,把常见的问题整理了下来
第一种:
[Java] 纯文本查看 复制代码 public class study2{
public static void main(String[] args){
float a = 2.3f;
double b = (double)a;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
结果:
[Java] 纯文本查看 复制代码 a = 2.3
b = 2.299999952316284
第二种:
[Java] 纯文本查看 复制代码 public class study2{
public static void main(String[] args){
float a = 1f;
float b = 0.99999999f;
System.out.println(a==b);
}
}
结果:
第三种:
[Java] 纯文本查看 复制代码 public class study2{
public static void main(String[] args){
System.out.println(0.1+0.2);
}
}
结果:
[Java] 纯文本查看 复制代码 0.30000000000000004
解决方案:
使用java.math包
|