У того, что вы называете «мусором», наименьшая потеря информации из значения double
.
Когда 384.6433096437924 конвертируется в число с плавающей запятой двойной точности, результатом является значение вдвоичный формат, и это значение отличается от исходного значения.Если вы знаете, исходное значение имело 16 значащих десятичных цифр, то печать double
с 16 десятичными цифрами может привести к получению исходного значения (в большинстве случаев), и это имеет смысл.
Однако, если число было проведено с помощью различных вычислений, и нет никаких оснований полагать, что оно представляет собой число с некоторым точным числом десятичных цифр, то усечение или изменение его значения для отображения не дает никакой полезной информации.Это может облегчить чтение человеком, но все вычисленное значение - лучшая информация, которую мы имеем о результате, поэтому печать всего значения передает наибольшую информацию.
В качестве альтернативы, если исходное число может бытьЕсли преобразовать непосредственно в четверную точность, не пройдя двойную точность, ошибка преобразования обычно будет меньше, и этот метод предпочтительнее.
В конечном счете, какая форма лучше всего подходит для отображения, зависит от целей отображения,Хотите сохранить больше информации для будущего использования?Или вы хотите, чтобы результат был легко читаемым человеком?
Наконец, «мусор», который вы показываете, странный.Результат преобразования 384.6433096437924 в базовый 64-разрядный двоичный код с плавающей точкой IEEE-754 должен быть 384.64330964379240640482748858630657196044921875, но отображается значение 384.64330964379240681882947683334351.Я не понимаю, как возникла эта ценность.