number_precision

## `number_precision`

Enumeration of number parsing modes.

### Synopsis

Defined in header <boost/json/parse_options.hpp>.

    enum class number_precision
        : unsigned char;

### Values

Name | Description
--- | ---
`imprecise` | Fast, but potentially less precise mode.
`precise` | Slower, but precise mode.
`none` | The fastest mode, that only validates encountered numbers without parsing them.

### Description

These values are used to select the way to parse numbers. The default mode used by parsing functions is `imprecise`. It has the precision not less than 15 decimal places (the number required for IEEE `double`). This is also the number guaranteed by functions in most C++ standard library implementations.

But those functions often give a more precise result for certain numbers. For cases where such extra precision is needed the library provides `precise` mode. That extra precision comes with a performance cost, though.

Finally, users might want a to parse numbers with an external function when they implement a custom handler for `basic_parser`. Since it is wasteful to parse a number only to throw the result away, the library provides a mode to not parse numbers at all. Note: the library still have to validate that the input is a number, in order to catch syntax errors and to know when the number ends.

### See Also

`parse_options`, `basic_parser`, `parser`.

Convenience header <boost/json.hpp>.

Edit this page