确定一个数字是否是整数?

时间:2013-12-16 18:48:56

标签: c floating-point int division

我正在尝试制作一个程序,只有当该数字可以被2整除时才将数字除以2.我这样做是为了如果数字除以2的结果是浮点数,则除以2 ,像这样:

int p;
printf("Percentage please: ");
scanf("%d", &p);
while (((p/2) != // a floating point value)
{
    p = p/2;
}

但问题是我不确定C标准库中是否有函数,如isint()iswholenumber()。有没有任何功能或任何方式我可以实现类似的东西? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

您正在寻找模运算,它返回除法的其余部分,因此:

if( n % 2 == 1) // the number is not divisible by 2
if( n % 2 == 0) // divisible by 2

答案 1 :(得分:0)

当您划分两个int时,结果始终为int(编辑:截断):

1/2 --> 0
2/2 --> 1
3/2 --> 1

所以逻辑p/2 is not a float没有意义。相反,正如其他人所建议的那样,你想使用模运算符来返回除法的其余部分:

if( n % 2 ) // not divisible by 2
{
}
else // divisible by 2
{
}

注意:由于所有未评估为0的整数等同于true,因此您无需检查n % 2 != 0

答案 2 :(得分:-2)

你可以要求用户输入一个字符串,然后使用int.TryParse

int x;
if (int.TryParse(inputString, out x))
{
    // input is an integer.
}