Converts a floating point number to a string.

Syntax

#include <prdtoa.h>

PRStatus PR_dtoa(
   PRFloat64 d,
   PRIntn mode,
   PRIntn ndigits,
   PRIntn *decpt,
   PRIntn *sign,
   char **rve,
   char *buf,
   PRSize bufsz);

Parameters

The function has these parameters:

d
The floating point number to be converted to a string.
mode
The type of conversion to employ.
ndigits
The number of digits desired in the output string.
decpt
A pointer to a memory location where the runtime will store the offset, relative to the beginning of the output string, of the conversion's decimal point.
sign
A location where the runtime can store an indication that the conversion was of a negative value.
*rve
If not NULL this location is set to the address of the end of the result.
buf
The address of the buffer in which to store the result.
bufsz
The size of the buffer provided to hold the result.

Results

The principle output is the null-terminated string stored in buf. If rve is not NULL, *rve is set to point to the end of the returned value.

Description

This function converts the specified floating point number to a string, using the method specified by mode. Possible modes are:

0
Shortest string that yields d when read in and rounded to nearest.
1
Like 0, but with Steele & White stopping rule. For example, with IEEE 754 arithmetic, mode 0 gives 1e23 whereas mode 1 gives 9.999999999999999e22.
2
max(1, ndigits) significant digits. This gives a return value similar to that of ecvt, except that trailing zeros are suppressed.
3
Through ndigits past the decimal point. This gives a return value similar to that from fcvt, except that trailing zeros are suppressed, and ndigits can be negative.
4,5,8,9
Same as modes 2 and 3, but usingleft to right digit generation.
6-9
Same as modes 2 and 3, but do not try fast floating-point estimate (if applicable).
all others
Treated as mode 2.

Upon return, the buffer specified by buf and bufsz contains the converted string. Trailing zeros are suppressed. Sufficient space is allocated to the return value to hold the suppressed trailing zeros.

If the input parameter d is+Infinity,-Infinity orNAN, *decpt is set to 9999.