检查输入是否在C中浮动?

时间:2015-12-08 23:29:06

标签: c

我正在尝试创建一个代码,用于检查用户输入是否为float。这就是我所拥有的:

while (ceil(var1) == var1 || ceil(var2) == var2) {
            printf("Not float \n");
            printf("enter float: ");
            scanf("%f,%f", var1, var2);

            var1 = *num1;
            var2 = *num2;
    }

这有点用,但如果我输入类似:2,3的内容,它就不会接受这个浮动。

1 个答案:

答案 0 :(得分:1)

您试图确定的是浮点变量是否具有小数部分(或者float输入是否可以精确地表示为整数)。

是不一样的
  

输入是浮动还是不是

这没有任何意义,float变量总是float

比较浮点值的相等性总是有问题的。您通常必须测试两个值之间的差异是否小于某些任意小但可表示和可接受的错误限制。例如:

fabs(ceil(var1) - var1)< FLT_EPSILON

您可以尝试使用modf(),但可能会遇到同样的问题。     双重部分;     double fractpart = modf(var1,& intpart);     if(fabs(fractpart)< FLT_EPSILON)     {         //没有小数部分     }

请注意,C数学库是为double而不是float定义的。在许多情况下,隐式转换是安全的,但不能传递modf()的指针参数。