2016-06-08 9 views
3

ich folgende Werte zu forma benötigt, wie ich im Folgenden beschrieben:Wie man ein Doppelzimmer mit zwei Dezimalstellen nur drucken, wenn

double d = 1234 Ergebnis 1.234

double d = 1234,0 Ergebnis sollte sein sollte 1.234

double d = 1234.5 Ergebnis sollte 1,234.50

sein ich diese Methode versucht

NumberFormat nf = new DecimalFormat("#,##.##"); 
nf.setMinimumFractionDigits(2); 
nf.setMaximumFractionDigits(2); 
System.out.println(nf.format(d1)); 

aber es funktioniert nicht, wenn der Wert 1234 oder 1234 0,0

+0

sollten Sie einen anderen Code für den Dezimalpunktwert und den Dezimalpunkt eingeben –

+0

@AbhishekPatel: absolut! – Bathsheba

+0

Was ist mit dem abgerundeten Gehäuse? z.B. 1234.001 –

Antwort

1

I Bathsebas Lösung mögen, aber wenn Sie 1234,001 wollen auch als 1234 betrachtet werden:

NumberFormat nf = new DecimalFormat("#,###.00"); 
String s = nf.format(d1); 
if (s.endsWith(".00")) { 
    s = s.substring(0, s.length()-3); 
} 
+0

Ich mag Bathsheba's Antwort auch, aber ich denke, das ist was ich will. Ihre Lösung funktioniert mit wenig Veränderung NumberFormat nf = new DecimalFormat ("#, ###. 00"); Danke. –

+0

@MilanJayawardane kein Problem - Ich aktualisierte die Antwort mit Ihrem Update –

3

Diese Art der Sache ein Schmerz ist mit einem Formatierer zu tun. Erwägen Sie die Verwendung

if (d1 % 1.0 == 0.0/*yeah, this ain't quick, but then neither is I/O*/){ 
    // I'm a whole number, floating point modulus is valid in Java. 
    // And this is a remarkably good way of testing if a floating 
    // point value is a whole number. 
    // Format to 0 decimal places. 
} else { 
    // Format to 2 decimal places. 
} 
+0

es funktioniert für mich, danke –

+0

Ich denke du bist ok mit 1234.001 wie 1234.00 aussieht? –

+0

@ScottAMiller Ich habe das nicht bemerkt. Nein, ich möchte es 1234. –

0
System.out.printf("%.0f",34.0f); 
+0

bitte erklären Sie diese Antwort ein wenig. Code-Only-Antworten sind meistens nicht von großem Wert. Danke! Mach weiter so! –

0

Sie verschiedene Bedingungen überprüfen und definieren entsprechend der Formatierung

double d = 1234.5; 
     String inp[] = Double.toString(d).split("\\."); 
     if((inp.length ==1 &&(inp[1] =="0")) || inp.length ==0){ 
      NumberFormat nf = new DecimalFormat("#,###"); 
      System.out.println(nf.format(d)); 
     }else { 
      NumberFormat nf = new DecimalFormat("#,###.##"); 
      nf.setMinimumFractionDigits(2); 
      nf.setMaximumFractionDigits(2); 
      System.out.println(nf.format(d)); 
     } 
+0

Ist das ein guter Weg, dies zu tun? –

1

Versuchen Sie, wie dieses

NumberFormat nf = new DecimalFormat("#,##.##"); 
System.out.println(nf.format(d1)); 

if(d-(int)d==0){ 
    System.out.println(d); 
} 
else{ 
    System.out.println(nf.format(d)); 
} 
+0

das funktioniert nicht –

Verwandte Themen