0

私はこの方程式を持っています

double x = ((newCount/allCount)/.8)*5.0;

newCountは値0 allCountのdoubleですは値0のdoubleです

結果x-nan(0x8000000000000)

これが発生する理由と、この値をチェックインしobjective cてデフォルト値を割り当てる方法

4

3 に答える 3

2

あなたはゼロでダイビングしています。次を使用して確認できます。

isnan(x)
于 2012-12-11T09:45:06.340 に答える
0

allCountは0であるため、0で除算します(知らない場合は不可能です)。したがって、xを割り当てる前に、最初にallCountが0でないことを確認してください。

if (allCount != 0)
    double x = ((newCount/allCount)/.8)*5.0;
于 2012-12-11T09:42:35.510 に答える
0

問題は、分母(allCount)が0であるということです。ゼロ除算は許可されておらず、答えは数値ではありません。あなたができる最も簡単なことは、分割を行う前にそれをテストすることです:

if (allCount != 0) {
  x = ((newCount/allCount)/.8)*5.0
} else {
  x = defaultValue;
}

Cの浮動小数点環境を使用して例外をテストするより複雑な方法がありますが、それはFE_DIVBYZERO標準ですが、めったに使用されないため、後でコードを読む人が理解するのがより困難になる可能性があります。

于 2012-12-11T09:48:03.737 に答える