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 结尾的字符串。如果 rveNULL,则 *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。

返回时,由 bufbufsz 指定的缓冲区包含转换后的字符串。尾随零被抑制。为返回值分配了足够的空间以容纳被抑制的尾随零。

如果输入参数 d+Infinity-InfinityNAN,则 *decpt 设置为 9999。