如何在C中打印字符串而不是浮点数

时间:2014-04-01 23:47:52

标签: division zero

请考虑以下事项:

#include <stdio.h>

int main()
{
    int first=9;
    int second=0;
    double ratio;

    if(second==0)
        ratio="n/a";
    else
        ratio=(double)singularCount/pluralCount;

    printf("ratio is: %f", ratio);

    return 0;
}

这显然不会按预期运行。

如果没有问题,我如何修改我的代码/ print语句来打印一个浮点数,如果有0除法则如何修改n / a?

我将在列表中打印许多这些比率,所以我希望看到&#34; n / a&#34;当除以0时。

期望的输出:

ratio is: n/a

2 个答案:

答案 0 :(得分:1)

你做错了什么......

你不应该把一个字符串放入一个双变量中 你想要做的是在未定义的双精度上使用isnan(这是完全合法的持有), 并对其进行if声明。

类似的东西:

if (isinf(ration)) printf("ration is undefined\n");
else printf...

通过这种方式,您可以发送double并从方法/过程/函数中获取它(我敦促您将其用于代码分离),然后您将能够获得不同的行为。

顺便说一下 - 看看这段代码:

#include <stdio.h>
#include <math.h>
void main()
{
    double d = 1.0/0.0;
    if (isnan(d)) printf("it is n/a\n");
    else if (isinf(d)) printf("it is inf\n"); 
    else printf("%f\n",d);
}

另一件事 - 在inf或nan的情况下,%f只会打印字符串&#34; inf&#34;和&#34; nan&#34;,如果它对你足够好 - 你不需要换一件东西,如果它适合你的眼睛。

答案 1 :(得分:0)

if (second == 0) {
 printf("ratio is: n/a");
} else {
 printf("ratio is: %f", (double)singularCount/pluralCount);
}