Преобразовать число в 2 десятичных знака в Java - PullRequest
26 голосов
/ 08 января 2012

Я хочу преобразовать число в 2 десятичных знака (всегда показывать два десятичных знака) во время выполнения. Я попробовал некоторый код, но он только делает, как показано ниже

 20.03034 >> 20.03
 20.3 >> 20.3  ( my code only rounds not converts )

однако, я хочу это сделать:

 20.03034 >> 20.03
 20.3 >> 20.30 (convert it to two decimal places)

Мой код ниже:

angle = a variable
angle_screen =  a variable

DecimalFormat df = new DecimalFormat("#.##");
angle = Double.valueOf(df.format(angle));
angle_screen.setText(String.valueOf(angle) + tmp);

Любая помощь в том, как это сделать, была бы великолепна, спасибо.

Ответы [ 4 ]

67 голосов
/ 08 января 2012

попробуйте new DecimalFormat("#.00");

обновление :

    double angle = 20.3034;

    DecimalFormat df = new DecimalFormat("#.00");
    String angleFormated = df.format(angle);
    System.out.println(angleFormated); //output 20.30

Ваш код неправильно использовал десятичный формат

0 вшаблон означает обязательную цифру, # означает необязательную цифру.

обновление 2 : проверьте ответ ниже

Если вы хотите 0.2677 отформатировать как 0.27, вам следует использоватьnew DecimalFormat("0.00"); в противном случае это будет .27

21 голосов
/ 17 октября 2013
DecimalFormat df=new DecimalFormat("0.00");

Используйте этот код, чтобы получить точно два десятичных знака. Даже если значение равно 0,0, вы получите 0,00 в качестве вывода.

Вместо этого, если вы используете:

DecimalFormat df=new DecimalFormat("#.00");  

Это не будет конвертировать 0.2659 в 0.27 . Вы получите ответ типа .27 .

15 голосов
/ 08 января 2012

Попробуйте это: String.format("%.2f", angle);

2 голосов
/ 08 января 2012

Попробуйте

DecimalFormat df = new DecimalFormat("#,##0.00");
...