c语言char和float相互转换

转换代码如下

union CharFloat{
	float numeric;
	unsigned char ascii[4];
};
float charTofloat(unsigned char *str) {
	CharFloat value;
	value.ascii[0] = str[0];
	value.ascii[1] = str[1];
	value.ascii[2] = str[2];
	value.ascii[3] = str[3];
	return value.numeric;
}
void floatochar(char* returnData, float numeric) {
	CharFloat value;
	int i = 0;
	value.numeric = numeric;
	returnData[i++] = value.ascii[3];
	returnData[i++] = value.ascii[2];
	returnData[i++] = value.ascii[1];
	returnData[i++] = value.ascii[0];
	for(int j=0;j<4;j++)
		printf("%2x,",value.ascii[j]);
}

要得到1位小数的话,整数不能高于5位。

要得到2位小数的话,整数不能高于4位

要得到3位小数的话,整数不能高于3位

要得到4位小数的话,整数不能高于2位

要得到5位小数的话,整数不能高于1位

要得到6位小数的话,整数不能高于0位

小数最多七位其实是0.1000000

同理可以计算double的精确度整数最多16位,小数最多16位(0.1000000000000000)


版权声明:本文为qq_40004575原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。