12.26C语言 不同数据类型与0的比较

2023-12-26 19:47:04

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码,注意,字符型变量与整型变量在内存中的表示是相同的,因此字符型变量与整数的比较是合法的。

文章来源:https://blog.csdn.net/lanssssss/article/details/135228608
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。