gpt4 book ai didi

检查C中输入是否为浮点型?

转载 作者:行者123 更新时间:2023-11-30 21:24:52 25 4
gpt4 key购买 nike

我正在尝试创建一个代码来检查用户输入是否为 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 的内容,它不会接受它作为 float 。

最佳答案

看来您想要确定的是浮点变量是否有小数部分(或者 float 输入是否可以精确地表示为整数)。那是不是不一样

input is float or not

这确实没有意义,float 变量始终是float

比较浮点值是否相等总是会出现问题。您通常必须测试两个值之间的差异是否小于某个任意小但可表示且可接受的误差限度。例如:

fabs(ceil(var1) - var1) < FLT_EPSILON

您可以尝试使用modf(),但它可能会出现相同的问题。 双整数部分; 双 fractpart = modf( var1, &intpart ) ; if( fabs( fractpart ) < FLT_EPSILON ) { //没有小数部分 }

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

关于检查C中输入是否为浮点型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34168081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com