2016-10-24 3 views
0

Ich erhalte immer einen Fehler, wenn ich versuche, meine Ausgabe auf 2 Dezimalstellen zu formatieren. Wie von 5.0 Ich möchte 5.00 in Java. Der folgende Code gibt weiterhin einen Formatierungsfehler aus.Formatierung auf 2 Dezimalstellen in Java

System.out.printf("%-40s %-6.2f", "Borrowing Fee: $", borrowingFee + "\n"); 

ich mag es Ausgabe: Borrowing Fee: $5.00

+3

'borrowingFee +" \ n "' erzeugt eine 'Zeichenkette', fügt stattdessen' '\ n" 'an die Formatzeichenfolge an (das 1. Argument), es könnte auch bemerkenswert sein, dass'% n' wahrscheinlich sein sollte in der Formatzeichenfolge verwendet. –

Antwort

0

Warum ein so komplizierter Code ?? Wenn Sie einen Schwimmer als Eingang haben, können Sie das tun:

public static void main(String[] args) { 
     float borrowingFee = 5.0F; 
     System.out.printf("Borrowing Fee: $%.2f ", borrowingFee); 
    } 

Es sollte Borrowing Fee: $5,00 oder Borrowing Fee: $5.00 nach Ihrem Standort zurück.

0

Formatierter Druck ist der gleiche wie C, wenn Sie in C programmiert haben. versuchen, etwas wie folgt aus:

System.out.printf("Borrowing Fee: $%.2f",borrowingFee); 
0

Sie DecimalFormat verwenden können. Es hat viele nützliche Funktionen.

public static String getFormattedAmountWithDecimals(String value){ 
    String tmpDouble = ""; 
    DecimalFormat formatter = new DecimalFormat("###,###,###.00"); 

    try { 
     tmpDouble = formatter.format(Double.parseDouble(value)); 
     if(tmpDouble.equalsIgnoreCase(".00")){ 
      tmpDouble = "0.00"; 
     } 
    }catch(Exception e) { 
    // System.out.println(e.toString()); 
    } 
    return tmpDouble; 
} 
0

Ich mag es, auf die öffentliche Dokumentation über die Methode zu verweisen.

https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

Das große wegzunehmen ist das Format:

public Print Format (String-Format, Object ... args)

, um Ihren Code bezieht Also dann zurück:

System.out.printf ("% - 40s% -6.2f", "Leihgebühr: $", borrowi ngFee + "\ n");

Sie versuchen String + String + Argument + String. Also, wenn Sie Ihre Zeile Code beheben wollen:

System.out.printf ("% - 40s% -6.2f", "Borrowing Fee: $ \ n", borrowingFee);

diese Weise in das Format der Methode String + String es ist zurück + ... + n Strings, Argumente

0

Zu allererst % s bedeutet String und % f Schwimmermittel Nummer.

System.out.printf ("% - 40s% -6.2f", "Leihgebühr: $", borrowingFee + "\ n");

In Ihrem Fall erstellt das 3. Argument, borrowingFee + "\n", eine Zeichenfolge, die nicht mit% f übereinstimmen konnte. Aus diesem Grund erhalten Sie möglicherweise die Ausnahmebedingungsnachricht java.util.IllegalFormatConversionException: f != java.lang.String

Hier zeigt IllegalFormatConversionException an, dass f (% f) nicht mit java.lang.String kompatibel ist.

Die einfache Lösung ist die \n in das erste Argument zu bewegen, da es das Format ist:

System.out.printf("%-40s %-6.2f\n", "Borrowing Fee: ", borrowingFee); 

Beachten Sie, dass das erste Argument "%-40s %-6.2f\n" das Format, die Leerzeichen mit% s und% f erzeugt, und der Rest Argumente sind die Füllungen für diese Leerzeichen.


Zusätzlich Ihr zweites Argument, "Borrowing Fee: $" wird versprochen, eine feste Zeichenfolge zu sein. Wenn Sie keinen riesigen Abstand zwischen dem Doppelpunkt und der Zahl wie Borrowing Fee: 55.00 möchten, müssen Sie ihn nicht formatieren. Sie können einfach tun

System.out.printf("Borrowing Fee: %.2f\n", borrowingFee); 

oder etwas größeren Raum mit \t

System.out.printf("Borrowing Fee:\t %.2f\n", borrowingFee); 

printf auf docs.oracle.com (Java7):

public Print printf (String Format, Object ... args)

Parameter:

  • Format - Ein Formatstring als

  • in Format-String-Syntax beschrieben
  • args - Argumente von dem Formatbezeich verwiesen in der Formatzeichenfolge. Wenn es mehr Argumente als Formatbezeichner gibt, werden die zusätzlichen Argumente ignoriert. Die Anzahl der Argumente ist variabel und kann null sein. Die maximale Anzahl von Argumenten ist durch die maximale Dimension eines Java-Arrays begrenzt, wie in der Java ™ Virtual Machine-Spezifikation definiert. Das Verhalten bei einem Null-Argument hängt von der Konvertierung ab.


Ich beabsichtige, die Funktion aufrufen und den Fehler im Code zu erklären.

Überprüfen Sie Andys Link für Details zur Formatierung.

Verwandte Themen