STRFROMD - Linux手册页
Linux程序员手册 第3部分
更新日期: 2019-03-06
名称
strfromd,strfromf,strfroml-将浮点值转换为字符串
语法
#include <stdlib.h> int strfromd(char *restrict str, size_t n, const char *restrict format, double fp); int strfromf(char *restrict str, size_t n, const char *restrict format, float fp); int strfroml(char *restrict str, size_t n, const char *restrict format, long double fp);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
strfromd(),strfromf(),strfroml():
- __STDC_WANT_IEC_60559_BFP_EXT__
说明
这些函数将浮点值fp转换为带有可配置格式字符串的字符串str。最多n个字符存储在str中。
当且仅当n足够大时,才写入终止空字节('\ 0'),否则写入的字符串将被截断为n个字符。
strfromd(),strfromf()和strfroml()函数等效于
snprintf(str, n, format, fp);
除了格式字符串。
Format of the format string
格式字符串必须以字符aq%aq开头。其后是可选的精度,该精度以句点字符(。)开头,后跟可选的十进制整数。如果在句点字符后未指定整数,则使用零精度。最后,格式字符串应具有转换说明符a,a,e,e,f,f,g或G之一。
基于函数后缀指示的浮点类型应用转换说明符。因此,与snprintf()不同,格式字符串没有长度修饰符。有关这些转换说明符的详细说明,请参见snprintf(3)。
该实现符合NaN和无穷大值转换的C99标准:
- If
fp
is a NaN, +NaN, or -NaN, and
f(or
a,e,
g)
is the conversion specifier, the conversion is to "nan", "nan", or "-nan",
respectively.
If
F(or
A,E,
G)
is the conversion specifier, the conversion is to "NAN" or "-NAN".
同样,如果fp为无穷大,则将其转换为[-] inf或[-] INF。
格式字符串格式错误会导致未定义的行为。
返回值
如果n有足够的空间,则strfromd(),strfromf()和strfroml()函数将返回在str中写入的字符数,而不计算终止的空字节。因此,n或更大的返回值意味着输出被截断。
版本
从2.25版开始,glibc中提供了strfromd(),strfromf()和strfroml()函数。
属性
有关本节中使用的术语的说明,请参见GNU C库手册中的attribute(7)和POSIX安全概念部分。
单元格不一致
注意:这些属性是初步的。
遵循规范
C99,ISO / IEC TS 18661-1。
备注
strfromd(),strfromf()和strfroml()函数考虑了当前语言环境的LC_NUMERIC类别。
示例
要将值12.1作为浮点类型转换为使用十进制表示法的字符串,结果为" 12.100000":
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromf(s, ssize, "%f", 12.1);
要将精度为12.3456的float类型转换为使用两位精度的十进制表示法的字符串,结果为" 12.35":
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromf(s, ssize, "%.2f", 12.3456);
使用科学记数法将精度为零的数字转换为双精度类型的值12.345e19转换为字符串,结果为" 1E + 20":
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <stdlib.h> int ssize = 10; char s[ssize]; strfromd(s, ssize, "%.E", 12.345e19);
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。