比较两个double值的相等性而不涉及计算

时间:2013-02-01 22:12:25

标签: java

我知道在涉及一些计算后,不能直接比较两个double值。 但是,我可以将安全相等从文字初始化的值与用于初始化的相同文字进行比较吗?

例如:

Double[] dValues = [...];
double minValue = Double.MAX_VALUE;
for(Double d:dValues) {
  if(d!=null)
    minValue = Math.min(d,minValue)
}

//Is that safe?
boolean someValueFound = minValue!=Double.MAX_VALUE

2 个答案:

答案 0 :(得分:3)

是的,在这种情况下,它是安全的。

只要您不执行任何计算/投射等,它将始终是安全的。关于受影响的价值 - 这可能会导致一些舍入。

这也是安全的,因为比较发生在原生/简单类型上,如果你使用Double而不是double,结果会有所不同。

答案 1 :(得分:0)

它的保存。 FloatDouble的唯一问题是计算操作时的舍入。

如果你想比较这样的计算值,则允许一点差异。