Общая проблема, которая удваивается и плавающая в двоичном формате.Не всегда возможно преобразовать десятичную дробь в двоичную дробь.Например, дробная дробь 0,2 имеет бесконечно много цифр в двоичном (двойном) формате.Таким образом, при преобразовании из бинарного формата в десятичную строку получается что-то вроде «0.2000000001», что отображается с помощью E. Для решения этой проблемы вы можете использовать класс BigDecimal, содержащий число в десятичном формате, так что нет проблем с E - его можно легко округлить до любого десятичногоуказать методом setScale.Или вы можете получить двойное значение как есть, записать его на выход с помощью String.format («Мое значение:% .3f», значение) - я рекомендую этот способ.
Если вы просто хотите округлить значение додесятичную точку, которую вы можете использовать:
new BigDecimal(val).setScale(3, RoundingMode.HALF_EVEN).doubleValue()
Но нет никакой гарантии, что это ядро вернет удвоение с точными дробными числами.