Базовый 32-битный двоичный формат IEEE-754 с плавающей запятой гарантирует только то, что шесть значащих десятичных цифр выдержат циклическое преобразование, а не семь.В частности: если вы преобразуете число, которое точно представлено шестью десятичными цифрами, умноженными на степень десять, в двоичный формат с использованием правильного округления до ближайшего округления, при этом переполнение или переполнение не происходит, а затем выполняется обратное преобразование в ближайшийчисло, представляемое шестью десятичными цифрами, умноженное на десять, результатом будет исходное число.
Как правило, когда десятичное число преобразуется в двоичную с плавающей точкой, результат может не совпадать с цифрами при записив десятичном.Ваш пример, 1234567000000000, преобразуется в 1234567008616448, но мы могли бы найти случай, когда 123456000… преобразуется в 123455900…, поэтому одна из исходных цифр отличается.Но точность, обеспечиваемая двоичным форматом, такова, что результат преобразования в двоичный формат всегда настолько близок к исходному значению, что разница никогда не превышает половины значения шестой цифры.Например, преобразование 123456000… всегда будет давать результат между 123455500… и 123456500… Поскольку результат первого преобразования всегда находится в пределах такого интервала, преобразование его обратно в шесть десятичных цифр с округлением всегда приводит к исходному числу.
Чтобы сделать эту гарантию, точность формата должна быть такой же высокой, как у одной части в 999999. Это потому, что тогда числа в двоичном формате настолько точно разнесены, что в интервале отОт 9999985… до 9999995…, поэтому результат преобразования из десятичной в двоичную форму может дать результат, достаточно близкий к исходному, чтобы обратное преобразование давало исходное значение.При значении 24 бита в значении (один подразумеваемый, 23 явных) точность составляет, по меньшей мере, одну часть в 2 23 , что составляет 8 388 608.(Значение может доходить до 16 777 215, но у нас нет выбора по этому поводу - он должен быть нормализован, что удерживает его в диапазоне от 8 388 608 до 16 777 215.)
Одна часть в 8 388 608 лучше, чем однав 999 999 можно гарантировать шесть цифр, но это не лучше, чем в 9 999 999, поэтому семь цифр не гарантируются.