summaryrefslogtreecommitdiffstats
path: root/docs/nspr/reference/pr_dtoa.rst
blob: d2f5d73bac657fe9874d674a29dd12d8bd8e682a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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.