Двойной имеет точность 52 двоичных разрядов или 15,95 десятичных разрядов. См. http://en.wikipedia.org/wiki/IEEE_754-2008.. Чтобы записать полную точность двойного во всех случаях, вам нужно как минимум 16 десятичных цифр. [Но см. Четвертое редактирование ниже].
Кстати, это значащие цифры.
Ответ на изменения OP:
Время выполнения с плавающей запятой в десятичной строке выводит больше цифр, чем значимо. Дабл может содержать только 52 бита значений (на самом деле 53, если считать «скрытый» 1, который не сохраняется). Это означает, что разрешение не более 2 ^ -53 = 1.11e-16.
Например: 1 + 2 ^ -52 = 1.0000000000000002220446049250313. , , .
Эти десятичные цифры .0000000000000002220446049250313. , , , являются наименьшим двоичным «шагом» в двойном при преобразовании в десятичное число.
«Шаг» внутри двойника:
.000000000000000000000000000000000000000000000000000000000000000001 в двоичном формате.
Обратите внимание, что двоичный шаг является точным, а десятичный - неточным.
Отсюда и десятичное представление выше,
1,0000000000000002220446049250313. , ,
является неточным представлением точного двоичного числа:
1.0000000000000000000000000000000000000000000000000001.
Третье редактирование:
Следующее возможное значение для двойного числа, которое в точном двоичном виде:
1.0000000000000000000000000000000000000000000000000010
преобразует неточно в десятичном виде в
1.0000000000000004440892098500626. , , .
Таким образом, все эти дополнительные цифры в десятичной дроби не очень значимы, они просто базовые артефакты преобразования.
Четвертое редактирование:
Хотя в двойном запоминается не более 16 значащих десятичных цифр, иногда необходимо 17 десятичных цифр для представления числа . Причина связана с нарезкой цифр .
Как я упоминал выше, в двойном числе 52 + 1 двоичных цифр. «+ 1» является предполагаемым ведущим 1 и не является ни сохраненным, ни значимым. В случае целого числа эти 52 двоичных цифры образуют число от 0 до 2 ^ 53 - 1. Сколько десятичных цифр необходимо для хранения такого числа? Ну, log_10 (2 ^ 53 - 1) составляет около 15,95. Таким образом, необходимо не более 16 десятичных цифр. Давайте обозначим эти d_0 до d_15.
Теперь рассмотрим, что числа с плавающей запятой IEEE также имеют двоичный показатель степени. Что происходит, когда мы увеличиваем экспонату, скажем, на 2? Мы умножили наше 52-битное число, каким бы оно ни было, на 4. Теперь вместо наших 52 двоичных цифр, идеально совпадающих с нашими десятичными цифрами от d_0 до d_15, мы имеем несколько значимых двоичных цифр, представленных в d_16. Однако, поскольку мы умножили на что-то меньше 10, у нас все еще есть значимые двоичные цифры, представленные в d_0. Таким образом, наши десятичные цифры 15,95 теперь занимают от d_1 до d_15, плюс некоторые старшие биты d_0 и некоторые младшие биты d_16. Вот почему иногда требуется 17 десятичных цифр для представления двойного IEEE.
Пятое редактирование
Исправлены числовые ошибки