Подтвердить что ты не робот

Java: double: как ВСЕГДА показывать две десятичные цифры

Я использую двойные значения в моем проекте, и я хотел бы всегда показывать первые две десятичные цифры, даже если они являются нулями. Я использую эту функцию для округления, и если значение, которое я печатаю, равно 3.47233322, оно (правильно) печатает 3.47. Но когда я печатаю, например, значение 2 печатает 2.0.

public static double round(double d) {
    BigDecimal bd = new BigDecimal(d);
    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bd.doubleValue();
}

Я хочу напечатать 2.00!

Есть ли способ сделать это без использования строк?

Спасибо!

РЕДАКТИРОВАТЬ: из ваших ответов (о которых я благодарю вас) Я понимаю, что я не знал, что я ищу (и я сожалею об этом): я знаю, как печатать две цифры после номера, используя предлагаемые вами решения... то, что я хочу, заключается в том, чтобы хранить в двойном значении непосредственно две цифры! Так что, когда я делаю что-то вроде этого System.out.println("" + d) (где d - мой двойник со значением 2), он печатает 2.00.

Я начинаю думать, что нет никакого способа сделать это... правильно? Еще раз спасибо за ваши ответы, пожалуйста, дайте мне знать, если вы знаете решение!

4b9b3361

Ответ 1

Вы можете использовать что-то вроде этого:

 double d = 1.234567;
 DecimalFormat df = new DecimalFormat("#.00");
 System.out.print(df.format(d));

Отредактировано, чтобы ответить на этот вопрос, потому что мне нужен был реальный ответ, и это появилось в Google, и кто-то отметил его как ответ, несмотря на то, что это не сработало, когда десятичные числа были равны 0.

Ответ 2

Используйте java.text.NumberFormat для этого:

NumberFormat nf= NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);

System.out.print(nf.format(decimalNumber));

Ответ 3

Вы можете просто сделать это:

double d = yourDoubleValue;  
String formattedData = String.format("%.02f", d);

Ответ 4

DecimalFormat - это самый простой способ использования:

double roundTwoDecimals(double d) {
        DecimalFormat twoDecimals = new DecimalFormat("#.##");
        return Double.valueOf(twoDecimals.format(d));
}

Надеюсь, это решит вашу проблему...

Ответ 5

java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##");
df.setMaximumFractionDigits(2); 
df.setMinimumFractionDigits(2); 

Ответ 6

Вы можете использовать что-то вроде этого:

Если вы хотите сохранить 0 также в ответе: затем используйте (0.00) в формате String

double d = 2.46327;
DecimalFormat df = new DecimalFormat("0.00");
System.out.print(df.format(d));

Выход: 2.46

double d = 0.0001;
DecimalFormat df = new DecimalFormat("0.00");
System.out.print(df.format(d));

Выход: 0,00

Однако, если вы используете DecimalFormat df = new DecimalFormat ( "0. ##" );

double d = 2.46327;
DecimalFormat df = new DecimalFormat("0.##");
System.out.print(df.format(d));

Выход: 2.46

double d = 0.0001;
DecimalFormat df = new DecimalFormat("0.##");
System.out.print(df.format(d));

Выход: 0