Datentypen Float ohne .0 ausgeben, sonstige Nachkommastellen aber erhalten

  • Themenstarter Themenstarter bur
  • Beginndatum Beginndatum
B

bur

Gast
Ich habe ein float-Array dessen Inhalt ich in der Konsole ausgeben möchte. Ich habe aus den Werten in einer for-Schleife einen String gebastelt:
Java:
meinString += floatArray[i];
Dabei werden alle Zahlen mit mindestens einer Nachkommastelle ausgegeben, zB: 5.0, 3.0, 15.43

Mein Problem ist ich will die Nachkommastellen da wo sie ungleich 0 sind erhalten, aber da wo sie gleich 0 sind sollen sie nicht ausgegeben werden. Mir fiel dazu ein in der for-Schleife erst alle Felder zu prüfen ob der Inhalt eine glatte Zahl ist und diese dann in einen int umzuwandeln:
Java:
if ( floatArray[i] % 1 == 0 )
meinString += (int) floatArray[i];
else meinString += floatArray[i];

Das funktioniert und ist auch nicht zu umständlich, aber eventuell geht es noch einfacher?
 
Java:
float a = 15.4f;
float b = 15f;

DecimalFormat df = new DecimalFormat( "#.##" );
System.out.println( df.format(a) ); // 15,40
System.out.println( df.format(b) ); // 14


'#' <-- Repräsentiert eine Ziffer – ist die Stelle nicht belegt, bleibt sie leer, damit führende Nullen und unnötige Nullen hinter dem Komma nicht angezeigt werden
 
Einfacher als 2 Zeilen Code? 🙂
Ja, war etwas komisch ausgedrückt. 😉 Ich meinte dass es bestimmt auch eine eingebaute Möglichkeit gibt die Ausgabe von float zu formatieren. Sowas wie Helgon dann mit DecimalFormat gepostet hat.

Für meinen Fall gefällt mir die Methode mit der Umwandlung in int besser, aber allgemein kann man DecimalFormat bestimmt mal gebrauchen.

Ansonsten habe ich es jetzt übrigens wirklich mit dem ternären Operator gelöst.
 

Zurück
Oben