检查双精度浮点数的相等和不相等条件。

6

我在比较两个double值时遇到了困难,使用==!=

我创建了6个双精度变量,并尝试在If条件中进行比较。

double a,b,c,d,e,f;

if((a==b||c==d||e==f))
{
//My code here in case of true condition
}
else if ((a!=b||c!=d||e!=f))
{
//My code here in case false condition
}

尽管我的条件是a和b相等,但控制权将转到else if部分。

因此,我尝试使用a.equals(b)进行相等条件检查,这对我来说效果很好。

我的问题是如何检查a不等于b。我在网上搜索过,但发现只能使用!=,但不知何故这对我不起作用。


5
如果 a.equals(b) 无效,尝试使用 !a.equals(b) - Christian Tapia
好的,谢谢...我没听懂这个想法,现在会尝试。 - Siva
1
如果a和b相同,应该使用“==”运算符,如果不起作用并且“.equals”运算符可以正常工作,则可能是您创建了Double变量而不是double。 - Madhawa Priyashantha
1
@Christian 感谢您的帮助,我已经解决了这个问题。 - Siva
2个回答

6
如果你正在使用 double (原始类型),那么 ab 不能相等。
double a = 1.0;
double b = 1.0;
System.out.println(a == b);

如果.equals()可以使用,那么您可能正在使用对象包装类型Double。此外,.equals()的等价物是!=
!a.equals(b)

编辑

此外,

else if ((a!=b||c!=d||e!=f))
{
  //My code here in case false condition
}

除非我漏掉了什么,否则应该只是这样。
else 
{
  //My code here in case false condition
}

如果您真的想要反转测试条件并再次进行测试,and,请按照原样进行。
 else if (!(a==b||c==d||e==f))

Or use De Morgan's Laws

 else if (a != b && c != d && e != f)

2
你可以使用

标签


 !a.equals(b) || !c.equals(d) || !e.equals(f)

使用双精度数据类型,您可以进行以下操作:

 ==,!= (you should try to use these first.. )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接