跳转到内容

ecvt,ecvtf,fcvt,fcvtf:double 或 float 转字符串

#include <stdlib.h>
char *ecvt(double val, int chars, int *decpt, int *sgn);
char *ecvtf(float val, int chars, int *decpt, int *sgn);
char *fcvt(double val, int decimals, int *decpt, int *sgn);
char *fcvtf(float val, int decimals, int *decpt, int *sgn);
```### Description
ecvt 和 fcvt 生成表示 double 数 val 的(以 null 结尾的)数字字符串。ecvtf 和 fcvtf 生成 float 数对应的字符表示形式。(stdlib 函数 ecvtbuf 和 fcvtbuf 是 ecvt 和 fcvt 的可重入版本。)
ecvt 和 fcvt 之间的唯一区别在于对第二个参数(chars 或 decimals)的解释。对于 ecvt,第二个参数 chars 指定要写入的字符总数(这也是格式化字符串中有效数字的位数,因为这两个函数只写入数字)。对于 fcvt,第二个参数 decimals 指定小数点后要写入的字符数;val 整数部分的所有数字始终包含在内。
由于 ecvt 和 fcvt 在输出字符串中只写入数字,因此它们将小数点的位置记录在 *decpt 中,将数字的符号记录在 *sgn 中。格式化数字后,*decpt 包含小数点左侧的数字位数。如果数字为正数,*sgn 包含 0;如果为负数,则包含 1。### Returns
这四个函数均返回一个指向新字符串的指针,该字符串包含 val 的字符表示形式。
---
**权威来源**: BUSMASTER DITA help source `ecvt.dita`, compiled into `BUSMASTER.CHM` with the application.