java 浮点数精度问题

mac2022-06-30  25

**未经作者允许,谢绝转载**

在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上百实例源码以及开源项目
最新回复(0)