在项目中,经常会遇到,比较double和float数值是否相等?
正常情况下,我们会直接判断两个变量是否相等,比如“A==B”
但是当A和B中是double和float数值时候,该方式不可取;
比如:以下代码提供一个接口bisSameVal,比较double和float两个数值是否相等;
当我们定义个double和float数值并且赋值233.23时,bisSameVal结果返回的是false;
#include "stdafx.h"
#include <stdio.h>
bool bisSameVal( double A ,float B )
{
if(A == B)
{
return true;
}
else
{
return false;
}
}
void main()
{
double a = 233.23;
float b = 233.23;
printf("Result:%d\n",bisSameVal(a, b));
return;
}
根据经验,为什么a和b两个数值不同,同样赋值的都是233.23;
但程序运行时,我们通过监视器,可以看到a和b的值,并不相等;