Преобразование из float
в double
является расширяющимся преобразованием , как , указанным JLS . Расширяющееся преобразование определяется как инъективное отображение меньшего набора в его супермножество. Поэтому число, представляемое , не изменяется после преобразования с float
в double
.
В вашем обновлении вы добавили пример, который должен продемонстрировать, что число изменилось. Однако это только показывает, что строковое представление номера номера изменилось, что действительно связано с дополнительной точностью, полученной путем преобразования в double
. Обратите внимание, что ваш первый вывод - это просто округление второго выхода. Как указано в Double.toString
,
Должна быть хотя бы одна цифра для представления дробной части, а кроме того, столько же, сколько только столько цифр, сколько необходимо, чтобы однозначно различать значение аргумента из смежных значений типа
blockquote>double
.Поскольку смежные значения в типе
double
намного ближе, чем вfloat
, для соответствия этому правлению требуется больше цифр .