| ▲ | kazinator 2 hours ago | |
Note that the number is 18 digits long. If there is a conversion to IEEE 64 bit double involved, that type is only guaranteed to record 15 decimal digits of precision, so this number cannot be represented with enough precision to recover all of its original digits. In C implementations, this value is represented as DBL_DIG, which is typically 15 on systems with IEEE floating point. (There is also DBL_DECIMAL_DIG which is typically 17; that's the opposite direction: how many decimal digits we need to print a double such that the exact same double can be recovered by parsing the value. DBL_DIG existed in C90, but DBL_DECIMAL_DIG didn't appear until, it looks like, C11.) | ||