C语言中将unsigned char数组转换成float型误差问题求解
如题所示,代码如下:
#define MAKEWORD(a, b) ((unsigned )(((unsigned char)(a)) | ((unsigned )((unsigned char)(b))) << 8))
#define MAKELONG(a, b) ((long)(((unsigned )(a)) | ((unsigned int)((unsigned )(b))) << 16))
float ftTemp = 0;
unsigned usLowTemp = 0;
unsigned usHiTemp = 0;
long lTemp = 0;
usLowTemp = MAKEWORD(buff->buff[0], buff->buff[1]);
usHiTemp = MAKEWORD(buff->buff[2], buff->buff[3]);
lTemp = MAKELONG(usLowTemp, usHiTemp);
ftTemp = *((float*)<emp);
printf ("ftemp = %f\n", ftTemp);
我输入是值为17.89,但是打印出来的值却是17.889999,不知错在什么地方,忘高手帮忙解答,能提供更好的办法不胜感激啊