ecvt , fcvt 或 gcvt 子例程

用途

将浮点数转换成字符串。

标准 C 库 (libc.a)

语法

#include <stdlib.h>

char *ecvt ( Value,  NumberOfDigits,  DecimalPointer,  Sign;)
double Value;
int  NumberOfDigits, *DecimalPointer, *Sign;
char *fcvt (Value, NumberOfDigits, DecimalPointer, Sign;)
double Value;
int  NumberOfDigits, *DecimalPointer, *Sign; 
char *gcvt (Value, NumberOfDigits,  Buffer;)
double Value;
int NumberOfDigits;
char *Buffer;

描述

埃克夫特国际格夫特 子例程会将浮点数转换为字符串。

埃克夫特 子例程将 参数转换为以 null 结束的字符串并返回指向它的指针。 NumberOfDigits参数指定字符串中的位数。 低阶数字根据当前的舍入方式进行舍入。 ecvt 子例程将 DecimalPointer 参数指向的整数设置为相对于字符串开头的小数点的位置。 (负数表示小数点在字符串中给定的数字前面。) 小数点本身不包括在字符串中。 如果 参数为负值,那么 埃克夫特 子例程还会将 符号 参数指向的整数设置为非零值,否则将值设置为 0。

fcvt子程序的操作与ecvt子程序完全相同,只是在 C 或 FORTRAN F 格式输出由NumberOfDigits参数指定的位数时,会对正确位数进行四舍五入。

注:在 F 格式中,NumberOfDigits参数是小数点后所需的位数。 大数在小数点前会产生一长串数字,小数点后会产生NumberOfDigits。 通常, 格夫特埃克夫特 子例程对于大量使用更为有用。

格夫特 子例程将 参数转换为以 null 结束的字符串,将其存储在 缓冲区 参数所指向的数组中,然后返回 缓冲区 参数。 gcvt子程序试图以 FORTRAN F 格式生成一个NumberOfDigits参数有效数字字符串。 如果无法执行此操作,那么将使用 E 格式。 格夫特 子例程禁止尾部零。 该字符串已准备好进行打印,请根据需要使用减号,小数点或指数来完成。 基数字符由当前语言环境确定 (请参阅 setlocale 子例程)。 如果未成功调用 setlocale 子例程,那么将使用缺省语言环境 POSIX。 缺省语言环境指定 . (句点) 作为基字符。 LC_NUMERIC 类别确定当前语言环境中的基字符的值。

对于浮点算术, 埃克夫特国际格夫特 子例程表示在 ANSI/IEEE 标准 754-1985 和 854-1987 中指定的以下特殊值:

表 1. 特殊值
描述
安静 NaN 指示安静的非数字 (NaNQ)
信令 NaN 指示发信号 NaNS
无穷大 指示 INF 值

与这些值中的每个值相关联的符号存储在 符号 参数中。

注: A value of 0 can be positive or negative. 在 IEEE 浮点中,零也有符号,并相应地设置 符号 参数。
注意: 所有三个子例程都将字符串存储在内存的静态区域中,每次调用其中一个子例程时都会覆盖该静态区域的内容。

参数

描述
VALUE 指定部分双精度浮点值。
NumberOfDigits 指定该字符串中的数字位数。
DecimalPointer 指定小数点相对于字符串起始位置的位置。
SIGN 指定将与返回值关联的符号放置在 符号 参数中。 在 IEEE 浮点中,由于可以 0 0 进行签名,因此针对签名 0 适当地 0 了 符号 参数。
缓冲区 为字符串指定一个字符数组。