牛骨文教育服务平台(让学习变的简单)
博文笔记

浮点数的大小比较

创建时间:2007-05-28 投稿人: 浏览次数:146

浮点数在转换过程中都会有误差的,所以浮点数不能直接比较其大小,一般在比较两个浮点数的时候是比较他们之间的差值,如果两个数之间的差值处于一个能接受的范围之内的话,那么,我们就认为这两个浮点数是相等的,
一般认为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("两个数不是一样大"); 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。