-1

私は数学方程式を解くプログラムをここに持っています: (3.31 * 10 の -8 乗 + 2.01 * 10 の -7 乗)/(7.16 * 10 の -6 乗 + 2.01 * 10 の -8 乗) ……しかし、俺のアウトプットはいつもナン!理由を教えてください。修正を手伝ってください。

int a = 10;
    int b = -10;
    //10 to the -8 power below
    float ab = 1 / (a * b * b * b * b * b * b * b) ;
    //10 to the -7 power below
    float ba = 1 / (a * b * b * b * b * b * b) ;
    //10 to the -6 power below
    float abc = 1 / (a * b * b * b * b * b) ;
    //equation below
    double conclusion = (3.31 * ab + 2.01 * ba) / (7.16 * abc + 2.01 * ab);
    NSLog(@"the answer to the equation is %f",conclusion);
4

1 に答える 1

1

式は整数として計算されます。整数では、1/100 は 0 に評価されます。

a および b 宣言を次のように変更するだけです。

float a = 10;
float b = -10;

次に、すべての計算が浮動小数点数になり、期待する値が得られます。

また、これはかなり奇妙な方法で数値を計算しています。のような浮動小数点リテラルとして入力することもできます3.31E-8。これは 3.31 * 10 の -8 乗です。

于 2013-02-27T00:23:42.190 に答える