浮点数精度问题
浮点数精度问题,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
浙公网安备 33010602011771号