VC++ MFC 生成随机数,判断两个double类型的数是否相等(实际想做一个自动出题 核对答案的小程序)谢谢!

void A::OnButton1()
{//生成两个double型的随机数
srand(time(NULL));
double n=rand()%999;
double w=n/100;
double m=rand()%20+4;
k=w*m;
//将数字转换为字符
char a[10],b[10];
sprintf(a,"%f",w);
sprintf(b,"%f",m);
//将字符显示在文本框中
m_1.SetWindowText(a);
m_2.SetWindowText(b);
}

void A::OnButton2()
{//从文本框中获得做题者的答案并转换为double型
CString cs1;

m_3.GetWindowText(cs1);

double n1=atoi(cs1.GetBuffer(0));
cs1.ReleaseBuffer();

////////////////////////////////
///////////////////////////////
//////////////////////////////重点在这儿,如何判断两个double类型的数相等??????
////////////////////////////这样实现不了。。。。。。
if((k-n1)==0)
{
MessageBox("恭喜郭文龙小童鞋,您做对了!!!","来自管老师的提示",MB_ICONASTERISK);
}
if((k-n1)!=0)
{
MessageBox(" 尊敬的郭大神仙,您做错了!!! \n\n 请返回重做!!!\n\n\n","来自管老师的提示",MB_ICONASTERISK);
}

}

//////////////////////////////////////谢谢!!!

第1个回答  2013-08-17
其实电脑是很难判断两个双精度浮点数是否相等。
方法是|a-b|<eps
两个数差的绝对值是否小于某个很小的数,通常自己定义这个很小的数,如eps = 1e-6。

Warning: Invalid argument supplied for foreach() in /www/wwwroot/www.t2y.org3v3b34/skin/templets/default/contents.html on line 47
相似回答