|
|
(23 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) {
| |
− | return Math.round(value * Math.pow(10, decimalPlace)) / Math.pow(10, decimalPlace);
| |
− | }
| |
− | </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]] | |