Double abschneiden in Java

Rupam Yadav 12 Oktober 2023
  1. Verwenden Sie DecimalFormat, um Double in Java abzuschneiden
  2. Verwenden von BigDecimal zum Abschneiden von Double in Java
  3. Apache Common Library zum Abschneiden von Dezimalzahlen in Java verwenden
  4. Verwenden von java.lang.Math zum Abschneiden von Dezimalzahlen in Java
Double abschneiden in Java

In diesem Artikel erfahren Sie, wie Sie eine Zahl in Java auf n Dezimalstellen kürzen oder abrunden. Java bietet zwei primitive Typen zum Speichern von Dezimalwerten, die double und float sind. Es wird empfohlen, die Klasse BigDecimal für genaue Werte oder Abrundungen zu verwenden.

Verwenden Sie DecimalFormat, um Double in Java abzuschneiden

DecimalFormat ist eine Unterklasse von NumberFormat, die Dezimalzahlen mithilfe des bereitgestellten Formatierungsmusters formatieren kann. Hier im folgenden Code haben wir ein Objekt von DecimalFormat erstellt, das ein geeignetes Formatierungsmuster übergibt. Wir können die format() Methode für das decimatFormat Objekt aufrufen und unsere Doppelvariable d als Parameter übergeben.

Die Methode format() gibt eine Zeichenkette zurück, die abgeschnitten ist, wie in der Ausgabe gezeigt.

import java.text.DecimalFormat;
public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    String pattern = "#.###";
    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    String formattedDouble = decimalFormat.format(d);
    System.out.println("Formatted double d = " + formattedDouble);
  }
}

Ausgabe:

Formatted double d = 9.457

Verwenden von BigDecimal zum Abschneiden von Double in Java

In Java sind BigDecimal unveränderliche, vorzeichenbehaftete Dezimalzahlen mit beliebiger Genauigkeit. Es bietet Kontrolle über Skalierung und Präzision. Wir erstellen ein BigDecimal-Objekt, das das als Zeichenkette konvertierte Double übergibt, um Probleme bei der Darstellung von ungefähren Werten zu vermeiden.

Wir rufen dann die Methode setScale(int newScale, RoundingMode roundingMode) für dieses BigDecimal-Objekt bd auf, die zwei Argumente akzeptiert: die zurückzugebende Skala von BigDecimal und die andere ist der anzuwendende Rundungsmodus. Der Modus RoundingMode.FLOOR rundet in Richtung negative Unendlichkeit.

public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    BigDecimal bd = new BigDecimal(String.valueOf(d));
    BigDecimal rounded = bd.setScale(2, RoundingMode.FLOOR);
    System.out.println("BigDecimal rounded off : " + rounded);
  }
}

Ausgabe:

BigDecimal rounded off : 9.45

Apache Common Library zum Abschneiden von Dezimalzahlen in Java verwenden

Dasselbe können wir mit dieser Bibliothek erreichen, deren Maven-Abhängigkeit unten angegeben ist.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.5</version>
</dependency>

Wir können die Methode Precision.round() aus dieser Bibliothek verwenden, um Dezimalzahlen zu formatieren. Diese Methode verwendet zwei Argumente, eines die zu formatierende Dezimalvariable und die Skalierung. Wir brauchen 4 Stellen nach dem Dezimalpunkt; Daher ist das die Skala, die wir brauchen. Die Ausgabe zeigt, dass Ziffern in der Dezimalstelle abgeschnitten sind.

import org.apache.commons.math3.util.Precision;
public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    double doubleP = Precision.round(d, 4);
    System.out.println("Precision rounded off : " + doubleP);
  }
}

Ausgabe:

Precision rounded off : 9.4569

Verwenden von java.lang.Math zum Abschneiden von Dezimalzahlen in Java

Dies ist eine weitere Möglichkeit, Dezimalzahlen in Java abzurunden. Die Methode Math.pow() steuert die Anzahl der Dezimalstellen n durch Multiplizieren und Teilen mit 10n. Mit dieser Methode erstellen wir eine Doppelvariable scale, die zwei Argumente verwendet, Basis 10 und Potenz 3.

Math.round() in Java wird verwendet, um eine Zahl auf die nächste Ganzzahl zu runden. Dazu addieren Sie 1/2 zur Zahl, sprechen den Boden des Ergebnisses und wandeln das Ergebnis in einen ganzzahligen Datentyp um. Diese Methode wird nicht empfohlen, da der Wert manchmal falsch abgeschnitten wird.

public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    double scale = Math.pow(10, 3);
    double doubleM1 = Math.round(d * scale) / scale;
    System.out.println("Math1 Rounded off: " + doubleM1);
  }
}

Ausgabe:

Math Rounded off: 9.45
Math1 Rounded off: 9.457
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java Double