PR_dtoa¶
将浮点数转换为字符串。
语法¶
#include <prdtoa.h>
PRStatus PR_dtoa(
PRFloat64 d,
PRIntn mode,
PRIntn ndigits,
PRIntn *decpt,
PRIntn *sign,
char **rve,
char *buf,
PRSize bufsz);
参数¶
该函数具有以下参数
d
要转换为字符串的浮点数。
mode
要使用的转换类型。
ndigits
输出字符串中所需的数字位数。
decpt
指向内存位置的指针,运行时将在该位置存储转换的小数点的偏移量(相对于输出字符串的开头)。
sign
运行时可以在其中存储转换是否为负值的指示。
*rve
如果非
NULL
,则此位置设置为结果末尾的地址。buf
用于存储结果的缓冲区的地址。
bufsz
提供的缓冲区的大小,用于保存结果。
结果¶
主要输出是存储在 buf
中的以 null 结尾的字符串。如果 rve
非 NULL
,则 *rve
设置为指向返回值的末尾。
描述¶
此函数使用由 mode
指定的方法将指定的浮点数转换为字符串。可能的模式为
0
产生
d
的最短字符串(读取并四舍五入到最接近的值)。1
类似于 0,但使用 Steele & White 停止规则。例如,对于 IEEE 754 算术,模式 0 给出 1e23,而模式 1 给出 9.999999999999999e22。
2
max(1, ndigits)
有效数字。这给出的返回值类似于ecvt
的返回值,除了尾随零被抑制。3
小数点后
ndigits
位。这给出的返回值类似于fcvt
的返回值,除了尾随零被抑制,并且ndigits
可以为负数。4,5,8,9
与模式 2 和 3 相同,但使用从左到右的数字生成。
6-9
与模式 2 和 3 相同,但不要尝试快速浮点数估计(如果适用)。
all others
视为模式 2。
返回时,由 buf
和 bufsz
指定的缓冲区包含转换后的字符串。尾随零被抑制。为返回值分配了足够的空间以容纳被抑制的尾随零。
如果输入参数 d
为+Infinity、-Infinity 或NAN,则 *decpt
设置为 9999。