直接这样不可以判断出来x的值是否为0吗?
float x;
scanf("%f",&x);
if(x==0)
{
printf("yes");
}
else
{
printf("no");
}
输入0.123456
输出no
输入0.00001
输出no
输入0.0000
输出yes 一切都很正常 不过我输入了一个a 输出的却是yes。。这让我不淡定了。。
为啥呢?输入a输出yes?a的ASCII码也不是0啊
因为浮点数有误差,对于浮点数相等的判断,一般通过两数相减取绝对值是否小于一个很小的数的方式判断。
浮点数不能直接和0比较,需要使用绝对值
因为浮点数没有绝对的0值,判断它是否为0。只能指定一个靠近0的浮点数进行比较,通过比较该值是否等于或小于比较数,进行判断。
浮点数是存在误差的,判断一般通过相减后在进行判断
浮点数不能是绝对的0值
真这么简单就怪了