java中浮点数判断是否相等
浮点数判断是否相等
- 前言
- 问题
- 解决
前言
首先简单提一下== 和equals :
== 的作用:
基本类型:比较值是否相等
引用类型:比较内存地址值是否相等
equals 的作用:
引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。
问题
这里就有一个容易让人产生误解的地方了.
java基本类型:byte,short,char,int,long,float,double,boolean
这其中包含了 float , 和double , 两个浮点类型的,这两种类型是不能用 == 来判断是否相等的, 其中有一个精度的问题.
如下:
Double a = 1.234567d;Double b = 1.234567d;if(a==b){System.out.println("==");}
运行会发现a 和 b 是不相等的.
解决
浮点型的不能用 == 判断如何解决呢?
两个浮点数比较可以通过相减并与预先设定的精度比较,记得要取绝对值
示例:
Double a = 1.234567d;Double b = 1.234569d;double precision = 0.000001d;if(Math.abs(a-b)<precision){System.out.println("==");}else{System.out.println("不等");}
如上精度设置为:0.000001
如果判断误差在这个精度内,就认为相等.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
