c语言如何把float型转化为char型

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:27:11

float a;char b;
b=(char)a;

函数名: gcvt
功 能: 把浮点数转换成字符串
用 法: char *gcvt(double value, int ndigit, char *buf);
头文件:#include <stdlib.h>
参数:
value——被转换的值。
Digits——存储的有效数字位数。
Buffe——结果的存储位置。
说明:
gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的
符号字节)并存储该字符串在buffer中。该buffer应足够大以便容纳转换
的值加上结尾的空格字符,它是自动添加的。如果一个缓冲区的尺寸为
digits的尺寸+1,该函数覆盖该缓冲区的末尾。这是因为转换的字符串包
括一个小数点以及可能包含符号和指数信息。不提供上溢出。gcvt试图
以十进制格式产生digits数字,如果不可能,它以指数格式产生digits数字,
在转换时可能截除尾部的0。

VC在处理浮点数向整形转换的时候,默认是调用_ftol函数(从汇编可以看出来):

好一点的方法是(至少比楼上用的强转快):
flot f;
int a = *(int*)(&f);
int sign = (a>>31);
int mantissa = (a&((1<<23)-1))|(1<<23);
int exponent = ((a&0x7fffffff)>>23)-127;
int r = ((unsigned int)(mantissa)<<8)>>(31-exponent);
char ch = ((r ^ (sign)) - sign ) &~ (exponent>>31);

但是你很有可能看不懂,因为涉及到IEEE754的浮点