Как отобразить вывод данных float с 2 десятичными знаками в Java?


5 Answers

Вы можете использовать DecimalFormat . Один из способов его использования:

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));

Другой - построить его, используя формат #.## .

Я считаю, что все варианты форматирования менее читабельны, чем вызов методов форматирования, но это вопрос предпочтения.

Question

Могу ли я сделать это с помощью System.out.print ?




float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24



Просто выполните String str = System.out.printf("%.2f", val).replace(",", "."); если вы хотите, чтобы независимо от Locale пользователя, вы всегда будете получать / отображать «.». как десятичный разделитель. Это необходимо, если вы не хотите, чтобы ваша программа вышла из float f = Float.parseFloat(str); если вы позже выполните какое-то преобразование, например float f = Float.parseFloat(str);




Посмотрите на DecimalFormat

Вот пример из учебника:

  DecimalFormat myFormatter = new DecimalFormat(pattern);
  String output = myFormatter.format(value);
  System.out.println(value + "  " + pattern + "  " + output);

Если вы выберете шаблон типа «###. ##», вы получите два десятичных знака, и я думаю, что значения округлены. Вы захотите просмотреть ссылку, чтобы получить точный формат, который вы хотите (например, хотите ли вы завершать нули)




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



OK - str для плавания.

package test;

import java.text.DecimalFormat;

public class TestPtz {
  public static void main(String[] args) {
    String preset0 = "0.09,0.20,0.09,0.07";
    String[] thisto = preset0.split(",");    
    float a = (Float.valueOf(thisto[0])).floatValue();
    System.out.println("[Original]: " + a);   
    a = (float) (a + 0.01);

    // Part 1 - for display / debug
    System.out.printf("[Local]: %.2f \n", a);
    // Part 2 - when value requires to be send as it is
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(2);
    df.setMaximumFractionDigits(2);
    System.out.println("[Remote]: " + df.format(a));

  }
}

Вывод:

run:
[Original]: 0.09
[Local]: 0.10 
[Remote]: 0.10
BUILD SUCCESSFUL (total time: 0 seconds)





Related