あなたはこれを行うことができます:
int m = floor(sqrt(n) + 0.5); //对n开方并且四舍五入(floor()函数是向下取整)
if(m*m == n) printf("%d是整数", n);
実際には、私の最初に考えたのはこのことです
if(sqrt(n)==floor(sqrt(n))) printf("%d\n",n);
と
int m = floor(sqrt(n));
if(m*m == n) printf("%d是整数", n);
これらの2つの方法は、理論的には可能同じ本質であるが、直接切り捨て取った場合、エラーが発生した計算の多数の後、例えば、1 0.999999999の整数となり、それは0.999999999となります0ではなく、したがって1、丸め誤差を低減するために、この方法を使用して。