当我运行这个程序时,为什么我会得到nan?

时间:2013-02-27 00:19:53

标签: objective-c nan xcode4.6

我这里有一个解决数学方程的程序:(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);

1 个答案:

答案 0 :(得分:1)

您的表达式计算为整数。在整数中,1/100的计算结果为0。

只需将a和b声明更改为:

float a = 10;
float b = -10;

然后所有的计算都将是浮点数并且具有您期望的值。

此外,这是以一种相当奇怪的方式计算数字。您也可以将它们作为浮点文字输入,例如3.31E-8,它是-31幂的3.31 * 10。