1.整型
用==或!=判断
2.float和double型
不可以直接用==判断,因为会涉及到精度问题,可能会导致不准确的结果,需要定义一个很小的值作为阈值,
单精度(float)<1e-6即可
双精度(double)<1e-15
# include <stdio.h>
# include <math.h>
# define FLOAT_EPS 1e-6
# define DOUBLE_EPS 1e-15
int main(void)
{
float f1 = 0.000001;
float f2 = 0.001;
double d1 = 0.00001;
double d2 = 0.00001;
//判断浮点数是否等于0
//1、单精度浮点数
if (fabs(f1) <= FLOAT_EPS)
{
printf("%f为0\n", f1);
}
else
{
printf("%f不为0\n", f1);
}
//2、双精度浮点数
if (fabs(d1) <= DOUBLE_EPS)
{
printf("%lf为0\n", d1);
}
else
{
printf("%lf不为0\n", d1);
}
//判断两个浮点数是否相等
//1、单精度浮点数
if (fabs(f1 - f2) <= FLOAT_EPS)
{
printf("%f 和 %f 相等\n", f1, f2);
}
else
{
printf("%f 和 %f 不相等\n", f1, f2);
}
//2、双精度浮点数
if (fabs(d1 - d2) <= DOUBLE_EPS)
{
printf("%lf 和 %lf 相等\n", d1, d2);
}
else
{
printf("%lf 和 %lf 不相等\n", d1, d2);
}
return 0;
}--部分转载自博主涔曦
判断两个浮点数是否相等用减法,
求绝对值函数:整型用abs? 浮点型用fabs
3.字符型
主要是比较ASCII码,注意,字符型变量与整型变量在内存中的表示是相同的,因此字符型变量与整数的比较是合法的。