㈠ c语言中比较实型变量data2和常数0是否相等为什么用fabs(data2)<=1e-7
因为在c语言中实数是不确定的,比如实数0可能是0.000001所以不能用data2==0来判断,如果这样判断就算data2是0也会返回false实数的有效位是6位,所以用fabs(data2)<=1e-7来判断是准确的就是说如果比0.0000001还小的话那就是0
㈡ 假设在C语言中定义: float a; 那么怎么把a与0进行比较
如果要判定不等式的话,可以直接a < 0和a > 0
如果要判定等式的话,用fabs(a) < 1e-13 (数字只要够小就行)
由于精度问题,a == 0 可能不能正确判定
㈢ 为什么c语言中不直接将实数与0相比较
因为浮点数可能有误差
关键问题不在这里,而在于浮点运算是不精确的,运算结果本该等0的地方,有可能实际算出是0点000几。
㈣ c语言中为什么不能直接把实数与零值进行比较
不是不能而是不准float是浮点数存的是近似值当用来表示0的时候有可能计算结果是0,但是由于精度问题,实际上存储的是一个和0很接近的值而==只要不是完全相等就回是假于是用==判断float有可能出错。一般都是判断差值的绝对值,低于某一个精度值,就可以认为是相等了。
㈤ c语言中如何精确判断一个数是否等于零
//1整型
int i=2;
if(i==0)
printf("等于零");
else
printf("不等于零");
//2浮点型
float i=2;
if(fabs(i)<1e-6)
printf("等于零");
else
printf("不等于零");