Source code

Revision control

Copy as Markdown

Other Tools

PR_dtoa
=======
Converts a floating point number to a string.
Syntax
------
.. code::
#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 using\ *left 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* or\ *NAN*,
``*decpt`` is set to 9999.