String.format () округление двойного числа с ведущими нулями в цифрах - Java - PullRequest
8 голосов
/ 14 июля 2020

Я уже задавал этот вопрос здесь, в комментариях:

Как округлить число до n десятичных знаков в Java.

Я пытается преобразовать двойное число в строку с фиксированным количеством десятичных знаков. В вопросе выше решение довольно простое. При использовании

String.format("%.4g", 0.1234712)

я получаю ожидаемый результат, число, округленное до 4 цифр:

0.1235

Но когда после десятичной точки стоят нули:

String.format("%.4g", 0.000987654321)

Это вернет:

0,0009877

Похоже, функция игнорирует начальные нули в цифрах.

Я знаю, что могу просто определить новый DecimalFormat, но я хочу понять Эта проблема. И узнайте немного о синтаксисе.

1 Ответ

11 голосов
/ 14 июля 2020

Используйте %.4f, чтобы выполнить нужное округление. Этот описатель формата указывает значение с плавающей запятой с 4 цифрами после десятичной точки. Для этого используется округление до половины вверх, что означает, что если последнее рассматриваемое di git больше или равно пяти, оно будет округлено в большую сторону, а любые другие случаи приведут к округлению в меньшую сторону.

String.format("%.4f", 0.000987654321);

Demo

Спецификатор формата %g используется для указания количества отображаемых значащих цифр в нотации scientifi c. Начальные нули не имеют значения, поэтому они пропускаются.

...