-1

我在这里有一个程序可以求解数学方程:(3.31 * 10 到 -8 次方 + 2.01 * 10 到 -7 次方)/(7.16 * 10 到 -6 次方 + 2.01 * 10 到 -8 次方) ...但是,我的输出总是导致 nan!请告诉我原因并帮助我解决它。

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 回答