Fließkommazahlen mit Java runden: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K (Math.round())
(Weiterleitung nach Gleitkommazahlen mit Java runden erstellt)
(Markierung: Neue Weiterleitung)
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Math.round()=
+
#WEITERLEITUNG [[Gleitkommazahlen mit Java runden]]
Die Klasse {{JAPI|java.lang.Math}} bietet eine Methode zum Runden von Fließkommazahlen an. Mit dieser können wir recht einfach eine eigene Methode schreiben, die uns Dezimalzahlen auf eine beliebige Anzahl Nachkommastellen rundet.
 
<syntaxhighlight lang="java">
 
  /**
 
  * Rundet den übergebenen Wert auf die Anzahl der übergebenen Nachkommastellen
 
  * @param value ist der zu rundene Wert.
 
  * @param decimalPlace ist die Anzahl der Nachkommastellen, auf die gerundet werden soll.
 
  */
 
  private double round(double value, int decimalPlace) {
 
      double d = Math.pow(10, decimalPlace);
 
      return Math.round(value * d) / d);
 
  }
 
</syntaxhighlight>
 
  
Der Aufruf der Methode in einer Klasse zum Runden einer Zahl auf zwei Nachkommastellen sieht dann z.B. so aus:
+
[[Kategorie:Java]]
<syntaxhighlight lang="java">
 
  System.out.println(round(123.4567, 2);
 
</syntaxhighlight>
 
 
 
=String#format()=
 
In Programmen müssen Ergebnisse von Berechnungen oft für eine Ausgabe passend formatiert werden. Dazu gehört auch das Runden, bspw. von Euro-Beträgen.
 
 
 
<syntaxhighlight lang="java">
 
import java.util.Locale;
 
 
 
public class Formatter {
 
  public static void main(String[] args) {
 
      double number = 1234.565;
 
      System.out.println(number+" gerundet: "+String.format("%1.2f", number));
 
  }
 
}
 
</syntaxhighlight>
 
Möchte man bspw. das englische oder französische Zahlenformat ausgeben, muss noch ein passendes {{JAPI|Locale}} als erster Parameter der format()-[[Methode]] übergeben werden.<br>
 
Ansonsten wird das von der [[JRE]] erkannte Locale des [[Betriebssystem|Betriebssystems]] verwendet.
 
 
 
=NumberFormat=
 
Auch relativ einfach ist das Runden von Dezuimalzahlen mit [[NumberFormat]].
 
 
 
<syntaxhighlight lang="java">
 
import java.text.NumberFormat;
 
 
 
public class Formatter {
 
  public static void main(String[] args) {
 
      double number = 1234.565;
 
      NumberFormat formatter = NumberFormat.getInstance();
 
      formatter.setMaximumFractionDigits(2);
 
      System.out.println(number+" gerundet: "+formatter.format(number));
 
  }
 
}
 
</syntaxhighlight>
 
 
 
Mit Hilfe der Methode <code>NumberFormat#setMaximumFractionDigits(int value)</code> auf eine festgelegte Anzahl an Nachkommastellen begrenzen. Dabei wird auch eine Rundung der Zahl vorgenommen.
 
Möchte man bspw. das englische oder französische Zahlenformat ausgeben, muss noch ein passendes {{JAPI|Locale}} als Parameter der <code>getInstance()</code>-[[Methode]] übergeben werden.<br>
 
Ansonsten wird das von der [[JRE]] erkannte Locale des [[Betriebssystem|Betriebssystems]] verwendet.
 
 
 
 
 
=DecimalFormat=
 
Noch eine einfache Variante für das Runden von Fließkommazahlen mit Java - mit [[DecimalFormat]].
 
 
 
{{JAPI|DecimalFormat}} ist eine Subklasse von NumberFormat für die Formatierung von Dezimalzahlen. Als Unterklasse von NumberFormat stehen auch hier Formatierungen von Dezimalzahlen in Abhängigkeit des Gebietsschemas zur Verfügung.
 
 
 
<syntaxhighlight lang="java">
 
import java.text.DecimalFormat;
 
 
 
public class Formatter {
 
  public static void main(String[] args) {
 
      double number = 1234.565;
 
      DecimalFormat formatter = new DecimalFormat("#.##");
 
      System.out.println(number+" gerundet: "+formatter.format(number));
 
  }
 
}
 
</syntaxhighlight>
 
 
 
DecimalFormat unterstützt verschiedene lokalisierbare Zahlen-Typen, so auch Ganzzahlen (123), Festkommazahlen (123,4), wissenschaftliche Notation (1,23E4), Prozentangaben (12%) und Währungsbeträge (123 $).
 
 
 
=Siehe auch=
 
*{{JAPI|NumberFormat}}
 
*{{JAPI|DecimalFormat}}
 
*[[String]]
 
*{{JAPI|String}}
 
 
 
[[Kategorie:Java-Codeschnipsel]]
 

Aktuelle Version vom 7. November 2021, 16:44 Uhr