1

我知道在涉及一些计算之后直接比较两个双精度值并不能保存。但是我可以安全地比较从文字初始化的值与用于初始化的相同文字的相等性吗?

例如:

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
4

2 回答 2

3

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

只要您不执行任何计算/转换/等,它总是安全的。在受影响的值上 - 这可能会导致一些舍入。

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

于 2013-02-01T22:14:43.027 回答
0

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

如果您想比较这样的计算值,请允许有一点增量差异。

于 2013-02-01T22:16:40.103 回答