怎么用c语言判断一个数是否为整数(这个数是开平方出来的)?

如题所述

因为实型和整型变量是不能直接比较的,要做一步类型转换才能比较首先要明确允许的误差是多少。比如一般情况误差的绝对值小于10-8时我们可以认为两个实数是相等的。

代码如下

#include <stdio.h>

#include <math.h>

main()

{

float b,c;

c=1;

while(c>=0)      //如果输入小于0,就结束程序

{

scanf("%f",&c);

b=sqrt(c);

if (fabs(b-(int)b)<1e-8) printf("%.0f的开平方是个整数\n",c);

elseprintf("%.0f的开平方不是整数\n",c);

}

}

结果

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-20
如果这个数是n,一般如是if(n==(int)n) printf("It is a integer.\n"); else printf("It is not a integer.\n");判断就可以了。但这不100%准确,因为同一个整数用int表达和用double表达实际上是有差别的,所以当浮点数与整型数相差非常非常小时可能会误判。本回答被网友采纳
第2个回答  2019-11-20
if(fabs(x-(int)(x+0.5))<1e-5)printf("%d是一个整数",(int)(x+0.5));
这里把它与相应整数的差小于0.00001,就视为它就是一个整数。
相似回答