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

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

12 ответов


можно использовать printf метод, например, так:

System.out.printf("%.2f", val);

короче,%.2f синтаксис говорит Java вернуть переменную (val) С 2 десятичными знаками (.2) в десятичном представлении числа с плавающей запятой (f) С начала спецификатора формата (%).

есть другие символы преобразования, которые вы можете использовать, кроме f:

  • d: десятичное целое число
  • o: восьмеричное целое число
  • e: плавающая точка в научной нотации

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

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

еще один-построить его с помощью .

Я нахожу все параметры форматирования менее читаемыми, чем вызов методов форматирования, но это вопрос предпочтения.


Я бы предложил использовать строку.format () если вам нужно значение как String в коде.

например, вы можете использовать String.format() следующим образом:

float myFloat = 2.001f;

String formattedString = String.format("%.02f", myFloat);

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

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

многие люди упомянули DecimalFormat. Но вы также можете использовать printf Если у вас есть последняя версия Java:

System.out.printf("%1.2f", 3.14159D);

дополнительные сведения о строке формата printf.


простой трюк состоит в том, чтобы создать более короткую версию вашей переменной, умножив ее, например,100, округляя его и деля на 100.0 снова. Таким образом, вы генерируете переменную с 2 знака после запятой:

double new_variable = Math.round(old_variable*100) / 100.0;

этот "дешевый трюк" всегда был достаточно хорош для меня и работает на любом языке (я не человек Java, просто изучаю его).


посмотреть DecimalFormat

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

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

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


float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));

выход 22.35. Если вам нужно 3 десятичных знака, измените его на"%.3Ф".


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)

небольшая простая программа для демонстрации:

import java.io.*;
import java.util.Scanner;

public class twovalues {

    public static void main(String args[]) {

        float a,b;
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter Values For Calculation");

        a=sc.nextFloat();
        b=sc.nextFloat();

        float c=a/b;
        System.out.printf("%.2f",c);
    }
}

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