C++学习记录之浮点数相等比较

用"=="来比较两个浮点数(float或double)是否相等,返回真值完全是不确定的。计算机对浮点数的计算原理是只保证必要精度内正确即可。但是可以用“>”,"<"比较浮点数的大小。

如以下比较fTemp是否等于0.9是不正确的,结果是未知的。

float fTemp=0.9;
if(0.9==fTemp)
{
		
}

以下是我封装的比较函数

float fTemp=0.9;
float CServerGameDesk::ChangePondPro(float fDegree)
{
	float EPSINON = 0.00001;//float的比较精度,如果是double建议精度为0.00000001
	float _Adegree=fDegree-0.1 ;//拿比较值和目标值的差值和精度去比较来判断是否相等
	float _Bdegree=fDegree-0.2 ;
	float _Cdegree=fDegree-0.3 ;
	float _Ddegree=fDegree-0.4 ;
	float _Edegree=fDegree-0.5 ;

	float fTemp=0.9;
	if((_Adegree>= - EPSINON) && (_Adegree<= EPSINON))//和精度比较来判断是否相等
	{
		fTemp=0.9;
	}
	else if((_Bdegree>= - EPSINON) && (_Bdegree<= EPSINON))
	{
		fTemp=0.7;
	}
	else if((_Cdegree>= - EPSINON) && (_Cdegree<= EPSINON))
	{
		fTemp=0.5;
	}
	else if((_Ddegree>= - EPSINON) && (_Ddegree<= EPSINON))
	{
		fTemp=0.3;
	}
	else if((_Edegree>= - EPSINON) && (_Edegree<= EPSINON))
	{
		fTemp=0.1;
	}
	return fTemp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值