浮点数精度问题

浮点数精度问题,c/c++ 浮点类型数据,计算时有精度误差。

例:

float fVal = 1.30;

int iVal = fVal *100;

int iRet = (int)(fVal * (iVal *1.0));

printf("fVal= %f, iRet=%d \n", fVal ,iRet );

输出结果:fVal= 1.300000, iRet=129

上面例子中,怎样才能输出130?

答:

例:

float fVal = 1.30;

fVal = fVal + 0.00001;  //精度修正

int iVal = fVal *100;

int iRet = (int)(fVal * (iVal *1.0));

printf("fVal= %f, iRet=%d \n", fVal ,iRet );

输出结果:fVal= 1.300000, iRet=130

 

 

 

posted on 2014-01-09 10:17  David_Li  阅读(162)  评论(0)    收藏  举报

导航