浮点数在转换过程中都会有误差的,所以浮点数不能直接比较其大小,一般在比较两个浮点数的时候是比较他们之间的差值,如果两个数之间的差值处于一个能接受的范围之内的话,那么,我们就认为这两个浮点数是相等的,
一般认为A与B的差大于某个很小的数时就认为A>B,比如:
if( A-B > 0.001 )
{
A>B...
}
一般来说这个可以接受的误差值就是计算机的转换误差,C++标准库提供了这个误差,你可以从numeric_limits模板库的epsilon函数取得:
numeric_limits<float>::epsilon()
所以,你在比较一个浮点数的时候可以这样比较:
.......
#include <limits>
#include <stdlib.h>
using namespace std
.......
float a,b;
a = b = 50;
if( abs(a-b) <= numeric_limits<float>::epsilon() )
ShowMessage("两个数一样大");
else
ShowMessage("两个数不是一样大"); 浮点数的大小比较