it-swarm.com.de

Wie kann ich eine Ausgabe von Float-Daten mit 2 Dezimalstellen in Java anzeigen?

Kann ich das mit System.out.print machen?

150
via_point

Sie können die printf -Methode wie folgt verwenden:

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

Kurz gesagt, die Syntax %.2f weist Java an, Ihre Variable (val) mit 2 Dezimalstellen (.2) in Dezimaldarstellung einer Gleitkommazahl (f) vom Anfang des Formatbezeichners (%) zurückzugeben.

Neben f können Sie noch andere Konvertierungszeichen verwenden:

  • d: dezimale ganze Zahl
  • o: oktale ganze Zahl
  • e: Gleitkomma in wissenschaftlicher Notation
197

Sie können DecimalFormat verwenden. Eine Möglichkeit, es zu benutzen:

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

Eine andere ist, es mit dem #.##-Format zu erstellen.

Ich finde alle Formatierungsoptionen weniger lesbar als das Aufrufen der Formatierungsmethoden. Dies ist jedoch eine Frage der Präferenz.

150
Bozho

Ich würde empfehlen, String.format () zu verwenden, wenn Sie den Wert als String in Ihrem Code benötigen. 

Beispielsweise können Sie String.format() auf folgende Weise verwenden:

float myFloat = 2.001f;

String formattedString = String.format("%.02f", myFloat);
72
John P.
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
35
Kevin Sylvestre
float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
15
Linh

Viele Leute haben DecimalFormat erwähnt. Sie können jedoch auch printf verwenden, wenn Sie eine aktuelle Version von Java verwenden:

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

Weitere Informationen zur printf-Formatzeichenfolge finden Sie in den Dokumenten des Formatter .

Ein einfacher Trick besteht darin, eine kürzere Version Ihrer Variablen zu generieren, indem Sie sie mit z. 100, rundet es und teilt es erneut durch 100.0. Auf diese Weise erzeugen Sie eine Variable mit 2 Nachkommastellen :

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

Dieser "billige Trick" war für mich immer gut genug und funktioniert in jeder Sprache (ich bin keine Java-Person, lerne es einfach).

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

Die Ausgabe ist 22.35 . Wenn Sie 3 Dezimalpunkte benötigen, ändern Sie sie in "% .3f".

5
Aldin Philo

Siehe DecimalFormat

Hier ist ein Beispiel aus dem Tutorial:

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

Wenn Sie ein Muster wie "###. ##" wählen, erhalten Sie zwei Dezimalstellen, und ich denke, dass die Werte aufgerundet werden. Sie sollten sich den Link ansehen, um das genaue Format zu erhalten, das Sie möchten (z. B. ob Sie nachgestellte Nullen möchten).

5
Uri

OK - str zu schweben.

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));

  }
}

Ausgabe:

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

kleines einfaches Programm zur Demonstration:

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);
    }
}
1
Pavan vadrevu

Nachfolgend finden Sie Code, wie Sie eine Ausgabe von Float-Daten mit zwei Dezimalstellen in Java anzeigen können:

float ratingValue = 52.98929821f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsFR = Float.valueOf(decimalFormat.format(ratingValue)); // output is 52.98
0
Keshav Gera

Ein Problem, das mich für eine Stunde oder länger beschäftigte: DecimalFormat- Es behandelt Double- und Float-Eingaben unterschiedlich. Auch der Wechsel von RoundingMode hat nicht geholfen. Ich bin kein Experte, aber dachte, es könnte jemandem wie mir helfen. Endete stattdessen mit Math.round. Siehe unten:

    DecimalFormat df = new DecimalFormat("#.##");
    double d = 0.7750;
    System.out.println(" Double 0.7750 -> " +Double.valueOf(df.format(d)));
    float f = 0.7750f;
    System.out.println(" Float 0.7750f -> "+Float.valueOf(df.format(f)));
    // change the RoundingMode
    df.setRoundingMode(RoundingMode.HALF_UP);
    System.out.println(" Rounding Up Double 0.7750 -> " +Double.valueOf(df.format(d)));
    System.out.println(" Rounding Up Float 0.7750f -> " +Float.valueOf(df.format(f)));

Ausgabe:

Double 0.7750 -> 0.78
Float 0.7750f -> 0.77

Rounding Up Double 0.7750 -> 0.78
Rounding Up Float 0.7750f -> 0.77
0
user2984447

Führen Sie einfach String str = System.out.printf("%.2f", val).replace(",", "."); aus, wenn Sie sicherstellen möchten, dass unabhängig vom Gebietsschema des Benutzers immer ein "." Angezeigt wird. als Dezimaltrennzeichen. Dies ist ein Muss, wenn Sie Ihr Programm nicht zum Absturz bringen möchten, wenn Sie später eine Konvertierung wie float f = Float.parseFloat(str); durchführen.

0
Paul Efford

Versuche dies:-

private static String getDecimalFormat(double value) {

    String getValue = String.valueOf(value).split("[.]")[1];

      if (getValue.length() == 1) {
          return String.valueOf(value).split("[.]")[0] +
                "."+ getValue.substring(0, 1) + 
                String.format("%0"+1+"d", 0);
       } else {
          return String.valueOf(value).split("[.]")[0]
            +"." + getValue.substring(0, 2);
      }


 }
0