私はこの方程式を持っています
double x = ((newCount/allCount)/.8)*5.0;
newCount
は値0
allCount
のdoubleですは値0のdoubleです
結果x
は-nan(0x8000000000000)
これが発生する理由と、この値をチェックインしobjective c
てデフォルト値を割り当てる方法
私はこの方程式を持っています
double x = ((newCount/allCount)/.8)*5.0;
newCount
は値0
allCount
のdoubleですは値0のdoubleです
結果x
は-nan(0x8000000000000)
これが発生する理由と、この値をチェックインしobjective c
てデフォルト値を割り当てる方法
あなたはゼロでダイビングしています。次を使用して確認できます。
isnan(x)
allCountは0であるため、0で除算します(知らない場合は不可能です)。したがって、xを割り当てる前に、最初にallCountが0でないことを確認してください。
if (allCount != 0)
double x = ((newCount/allCount)/.8)*5.0;
問題は、分母(allCount
)が0であるということです。ゼロ除算は許可されておらず、答えは数値ではありません。あなたができる最も簡単なことは、分割を行う前にそれをテストすることです:
if (allCount != 0) {
x = ((newCount/allCount)/.8)*5.0
} else {
x = defaultValue;
}
Cの浮動小数点環境を使用して例外をテストするより複雑な方法がありますが、それはFE_DIVBYZERO
標準ですが、めったに使用されないため、後でコードを読む人が理解するのがより困難になる可能性があります。