cpp/types/numeric limits/digits10

The value of is the number of base-10 digits that can be represented by the type  without change, that is, any number with this many significant decimal digits can be converted to a value of type  and back to decimal form, without change due to rounding or overflow. For base- types, it is the value of ( for floating-point types) multiplied by  and rounded down.

Example
An 8-bit binary type can represent any two-digit decimal number exactly, but 3-digit decimal numbers 256..999 cannot be represented. The value of for an 8-bit type is 2 ( is 2.41)

The standard 32-bit IEEE 754 floating-point type has a 24 bit fractional part (23 bits written, one implied), which may suggest that it can represent 7 digit decimals ( is 7.22), but relative rounding errors are non-uniform and some floating-point values with 7 decimal digits do not survive conversion to 32-bit float and back: the smallest positive example is, which becomes after the roundtrip. These rounding errors cannot exceed one bit in the representation, and is calculated as, which is 6.92. Rounding down results in the value 6.

Likewise, the 16-digit string does not survive text->double->text roundtrip, becoming : the 64-bit IEEE 754 type double guarantees this roundtrip only for 15 decimal digits.