求教_gcvt(),_ecvt(),_fcvt()参数意义及区别。。MSDN看晕了。。
重点RT,
另为何 atof()返回一个double,真的不明白double跟float在内存里的排列。如果不超出float范围,double低4字节和float一样吗?
[解决办法]
double : 符号1位,指数11位,尾数52位。
float :符号1位,指数8位,尾数23位。
float和double的不同,除了范围,更重要的是精度。按10进制看,float大概在小数点后6~7位,double能达到15位。
1.2345678912用double可以精确表示,用float要发生截断。
如果不超出float范围,double低4字节和float一样吗 可能不一样,取决于小数点后的位数和它否可完全转换为2进制。
[解决办法]
函数名称: gcvt
函数原型: char * gcvt(double value,int ndec,char *buf)
函数功能: 将数值value转换为长度为ndec的字符串
函数返回: 指向buf的指针
参数说明: value-要转换的浮点数值,ndec-转换后的长度
所属文件: <stdlib.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str[25];
double num;
int sig=5;
num=9.876;
gcvt(num,sig,str);
printf( "string=%s ",str);
num=-123.4567;
gcvt(num,sig,str);
printf( "string=%s ",str);
num=0.678e5;
gcvt(num,sig,str);
printf( "string=%s ",str);
return(0);
}