**未经作者允许,谢绝转载**
在java中如果涉及到数值的比较的话,尽量不要使用浮点数进行比较,浮点数因为精度问题,会造成比较的结果出现问题。
一下是使用整形进行计算
int i = 123456789; int i1 = i + 1; if (i == i1) { System.out.println("i == i1"); } else { System.out.println("i != i1"); }结果是
使用int的话会正常的得到我们想得到的结果,但是如果使用浮点型会怎么样呢
float f = 1234567831239f; float f1 = f + 1; if (f == f1) { System.out.println("f == f1"); } else { System.out.println("f != f1"); }以下是结果
这并不是我们想要的结果,那么为什么会出现这样的差异呢
通过以上的debug的结果,我们可以看到在程序中虽然f1=f+1但是在实际的计算中,浮点型呈现的是科学计数法,而不是我们想要的具体的数值,由于进行了进位,导致了数值精度的丢失
转载于:https://www.cnblogs.com/qiaoxiliang/p/5763792.html
相关资源:JAVA上百实例源码以及开源项目