toString - это особый метод. Это не означает «пользовательская строка отображения» на любом отрезке воображения (хотя часто случается так, что он совпадает, как в методе «String's toString»)
Это действительно для разработчиков, чтобы иметь возможность мгновенно уловить, что объект (в первую очередь, как отладочный вывод).
Для того, чтобы что-либо было распечатано пользователем, оно все равно должно обрабатываться через форматтер, чтобы обеспечить правильный максимальный размер, количество десятичных знаков и десятичный индикатор (. Или,).
В Java-коде 0.0 автоматически приводится к двойному значению, поэтому вполне логично, что двойное значение будет напечатано как 0.0 - это означает «это двойное число». Я немного удивлен, что это не заканчивается на «f» или «d», но это на самом деле очень раздражает, потому что toString для int действительно очень полезно, и постоянно следовать за ним с «i» было бы все выключены.