1

いくつかの計算が含まれた後、2 つの 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
4

2 に答える 2

3

はい、この場合は安全です。

計算/キャストなどを実行しない限り、常に安全です。影響を受ける値 - これにより、丸めが発生する可能性があります。

これも安全です。比較はネイティブ/単純型で行われるため、double の代わりに Double を使用すると結果が異なります。

于 2013-02-01T22:14:43.027 に答える
0

その保存。と の唯一の問題はFloatDouble計算操作中の丸めです。

そのような計算された値を比較したい場合は、わずかなデルタの違いを許容してください。

于 2013-02-01T22:16:40.103 に答える