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.
Я начинаю думать, что нет никакого способа сделать это... правильно? Еще раз спасибо за ваши ответы, пожалуйста, дайте мне знать, если вы знаете решение!
Ответы
Ответ 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