对⽐分析C语⾔中的gcvt()和ecvt()以及fcvt()函数gcvt()函数:
头⽂件:#include <stdlib.h>
定义函数:
char *gcvt(double number, size_t ndigits, char *buf);
函数说明:gcvt()⽤来将参数number 转换成ASCII 码字符串,参数ndigits 表⽰显⽰的位数。gcvt()与ecvt()和fcvt()不同的地⽅在于,gcvt()所转换后的字符串包含⼩数点或正负符号。若转换成功,转换后的字符串会放在参数buf 指针所指的空间。
返回值:返回⼀字符串指针,此地址即为buf 指针。
范例
#include <stdlib.h>
main(){
double a = 123.45;
double b = -1234.56;
char *ptr;
int decpt, sign;
gcvt(a, 5, ptr);
printf("a value=%s\n", ptr);
ptr = gcvt(b, 6, ptr);
printf("b value=%s\n", ptr);
}
执⾏结果:
a value=123.45
b value=-1234.56
ecvt()函数:
功能:将双精度浮点型数转换为字符串,转换结果中不包括⼗进制⼩数点。
⽤法:
char *Ecvt(double value, int ndigit, int *decpt, int *sign);
详细解释:Ecvt函数把⼀个双精度浮点数转换成⼀个字符串。value参数是要转换的浮点数。这个函数存储最多ndigit个数字值作为⼀个字符串,并添加⼀个空数字符('\0'),如果value中的数字个数超过ndigit,低位数字被舍⼊。如果少于ndigit个数字,该字符串⽤0填充。
只有数字才存储在该字符串中,⼩数点位置和value符号在调⽤之后从decpt和sign获取。decpt参数指出给出⼩数点位置的整数值,它是从该字符串的开头位置计算的。0或负数指出⼩数点在第⼀个数字的左边。sign参数指出⼀个指出转换的数的符号的整数。如果该整数为0,这个数为正数,否则为负数。
参数:
value:待转换的双精度浮点数。
ndigit:存储的有效数字位数。
*decpt:存储的⼩数点位置。
*sign:转换的数的符号。
返回值:
char*:指向⽣成的字符串。
备注:该函数的头⽂件是“stdlib.h”。
fcvt()函数
函数名:fcvt
功能:把⼀个浮点数转换为字符串
头⽂件:
#include <stdlib.h>
原型:
*fcvt(double value, int ndigit, int *decpt, int *sign);
参数说明:value是要转换的浮点数;ndigit是⼩数点后⾯的位数;*decpt表⽰⼩数点的位置;*sign表⽰符号,0为正数,1为负数。
实例代码:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
char *string;
double value;
int dec, sign;
int ndig = 10;
//clrscr();字符串截取小数点
value = 9.876;
string = fcvt(value, ndig, &dec, &sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
value = -123.45;
ndig= 15;
string = fcvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
value = 0.6789e5; /* scientific notation */
ndig = 5;
string = fcvt(value,ndig,&dec,&sign);
printf("string = %s dec = %d sign = %d\n", string, dec, sign);
return 0;
}
输出结果如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论