Für Sie, die von unerwarteten Dezimalstellen in Java betroffen sind

Einführung

Guten Abend. Nochmal. Es ist lange her seit meinem letzten Beitrag. .. ..

In diesem Artikel werde ich die Verwendung von BigDecimal beschreiben, wodurch die Berechnung nach dem Dezimalpunkt in Java genau ist. Ich werde nicht darauf eingehen, warum die Berechnung nach dem Dezimalpunkt genau durchgeführt werden kann, also hoffe ich, dass Sie es selbst herausfinden können. Ich hoffe, es ist hilfreich für diejenigen, die nach dem Dezimalpunkt genau berechnen möchten.

Vier-Regeln-Operation mit Big Decimal (Basic)

Lassen Sie uns nun über die grundlegende Big Decimal-Beschreibungsmethode schreiben. BigDecimal verwenden

.java


import java.math.BigDecimal;

Muss importiert werden. Da es sich um eine Standardbibliothek handelt, muss sie nicht von außen mitgebracht werden und kann sofort verwendet werden. Die Beschreibungsmethode und das Verwendungsbeispiel sind unten aufgeführt.

Vier Regeln Beschreibungsmethode
Hinzufügen add
Subtrahieren subtract
Multiplizieren multiply
Teilung divide

Main.java


import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        //Wertedefinition
        int one = 1;
        int two = 2;
        BigDecimal three = BigDecimal.valueOf(3);
        BigDecimal five = BigDecimal.valueOf(5);

        //Basic
        System.out.println(three.add(five));//8
        System.out.println(three.subtract(five));//-2
        System.out.println(three.multiply(five));//15
        System.out.println(three.divide(five));//0.6

        //Ein wenig angewendet
        System.out.println(BigDecimal.valueOf(two).add(BigDecimal.valueOf(one)).multiply(three));//9
    }
}

Eine solche Beschreibung ist möglich. Wie in der Anwendung des Kommentarteils gezeigt, ist es auch möglich, mehrmals hintereinander zu schreiben. (Ich habe Big Decimal ein halbes Jahr lang verwendet, ohne das zu wissen ...)

Punktberechnung mit Big Decimal

Ab hier befasst sich die Berechnung mit dem Dezimalpunkt. Da die Beschreibung von ROUND_UP usw. in Java9 oder höher nicht empfohlen wird, verwenden Sie bitte die in diesem Artikel verwendete Beschreibung von UP usw. Mit BogDecimal können Sie Werte unterhalb des Dezimalpunkts abschneiden oder abrunden. Verwenden Sie dazu die setScale-Methode. Beschreiben Sie im ersten Argument die Anzahl der zu steuernden Dezimalstellen. Wenn das erste Argument von setscale beispielsweise 0 ist, wird auf die erste Ziffer gesteuert. Die Beschreibungsmethode und das Verwendungsbeispiel werden unten beschrieben.

Rundungsmethode Beschreibungsmethode
Rundung HALF_UP
Zusammenfassen UP
Kürzen DOWN

Main.java


import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
    public static void main(String[] args) {
        //Wertedefinition
        BigDecimal one = BigDecimal.valueOf(1);
        BigDecimal three = BigDecimal.valueOf(3);
        BigDecimal num = new BigDecimal("1.567");

        //Basic
        System.out.println(num.setScale(0,RoundingMode.HALF_UP));//2
        System.out.println(num.setScale(1,RoundingMode.DOWN));//1.5
        System.out.println(num.setScale(2,RoundingMode.UP));//1.57

        //Ein wenig angewendet
        System.out.println(one.divide(three).setScale(2,RoundingMode.DOWN));//error
        System.out.println(one.divide(three,2,RoundingMode.DOWN));//0.3
    }
}

Die Variablendeklaration und -zuweisung in der 3. Zeile der Wertedefinition unterscheidet sich von der 1. und 2. Zeile. Selbst wenn Sie BigDecimal verwenden, können Sie den Dezimalpunkt möglicherweise nicht perfekt verarbeiten. Als Gegenmaßnahme dagegen ist es bei Verwendung des Dezimalpunkts in BigDecimal besser, ihn als Zeichenfolge zu behandeln. Obwohl es sich um einen String-Typ handelt, wird er so berechnet, wie er ist.

Ich habe in der zweiten Zeile des Antrags eine spezielle Beschreibung gemacht. Ich werde das erklären. Wenn ein Kreisbruch in der BigDecimal-Typteilung auftritt (in diesem Fall 0,3333 ...) Ich erhalte eine Ausnahme für java.lang.ArithmeticException. Als Gegenmaßnahme können Sie mit Big Decimal so etwas wie die zweite Anwendungszeile schreiben. Mit dieser Beschreibung ist es möglich, ein Programm zu schreiben, ohne eine Ausnahme auszulösen.

Big Decimal-Typkonvertierung

Nachdem Sie den Dezimalpunkt in BigDecimal berechnet haben, möchten Sie diesen Wert möglicherweise in einem primitiven Typ verwenden. Daher werde ich abschließend beschreiben, wie vom BigDecimal-Typ in den Int-Typ oder den Double-Typ konvertiert wird. Int-Typ und Double-Typ werden als Beispiele gezeigt.

Der Typ, den Sie konvertieren möchten Beschreibungsmethode
int intValue()
double doubleValue()

Main.java


import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        //Wertedefinition
        BigDecimal one = BigDecimal.valueOf(1);
        BigDecimal num = new BigDecimal("1.567");
        int a;
        double b;

        //Typkonvertierung
        a = one.intValue();
        b = num.doubleValue();
    }
}

Durch Schreiben auf diese Weise ist es möglich, den von BigDecimal berechneten Wert in einen primitiven Typ umzuwandeln.

abschließend

Dieses Mal schrieb ich über die grundlegende Beschreibung von BigDecimal, die häufig verwendet wird, um Berechnungen nach dem Dezimalpunkt in Java genau durchzuführen. Es gibt viele andere nützliche Methoden, wie zum Beispiel einen großen / kleinen Vergleich von Big Decimal und Power of Power. Schauen Sie sich diese also bitte an. Wenn Sie eine Meinung haben, dass Sie etwas mehr wissen möchten, kann ich einen Artikel hinzufügen. (Ich habe Lust zu schreiben, aber es hängt davon ab, wie beschäftigt ich bin ...) Wenn es Fehler, seltsame Ausdrücke oder Teile gibt, die klarer beschrieben werden können, ist dies meine Studie. Bitte kommentieren Sie diese. Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

Für Sie, die von unerwarteten Dezimalstellen in Java betroffen sind
So erhalten Sie eine Klasse von Element in Java
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Von Java zu Ruby !!
Wenn Sie Annotation in Java 8 dynamisch ersetzen möchten
Migration von Cobol nach JAVA
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Von ineffektivem Java zu effektivem Java
Wenn Sie die Java-Entwicklungsumgebung von Eclipse aus ändern möchten
Multithreaded passend zur [Java] Vorlage
[Java] Mit Arrays.asList () zu beachtende Punkte
Wie man JAVA in 7 Tagen lernt
Protokollausgabe in Datei in Java
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Schnittstelle für Anfänger
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Versuchen Sie, Yuma in Java zu implementieren
Der Weg von JavaScript nach Java
[Java] Konvertierung von Array zu Liste
Verwenden Sie Stream in Java?
So verketten Sie Zeichenfolgen mit Java
Für Sie, die unbedingt eine Rückverfolgung benötigen
[Java] Tipps und Fehlerprobleme beim Konvertieren von Double zu Big Decimal
(Beschränkt auf Java 7 oder höher) Ich möchte, dass Sie Objekte in Objects.equals vergleichen
Ihnen, denen im Feld "Keine Stream-API verwenden" mitgeteilt wurde
Was ist CHECKSTYLE: OFF in der Java-Quelle? Checkstyle zu wissen von
Lernen Sie Deep Learning von Grund auf in Java.
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Versuchen Sie, Project Euler in Java zu lösen
Einfach, Slack Bot mit Java zu machen
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie, n-ary Addition in Java zu implementieren
Rufen Sie Java-Methoden aus JavaScript auf, das in Java ausgeführt wird
Wichtige Punkte für die Einführung von gRPC in Java
OCR in Java (Zeichenerkennung aus Bildern)
Schlüssel vom Wert in Java Map umkehren
Konvertieren Sie von der Java-UTC-Zeit in die JST-Zeit
So führen Sie eine Basiskonvertierung in Java durch
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Ändern Sie die Liste <Optional <T >> in Java in Optional <Liste <T >>
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
So erzwingen Sie Codierungskonventionen in Java
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
Einbetten von Janus Graph in Java
3 schwierige Punkte für Java Realm
Post to Slack von Play Framework 2.8 (Java)
Java: So senden Sie Werte von Servlet zu Servlet
[Java] Fluss vom Quellcode zur Ausführung
So erhalten Sie das Datum mit Java
Abrufen des Verlaufs vom Zabbix-Server in Java
Einführung in die Überwachung von Java Touching Prometheus
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Fügen Sie Word-Dokumenten in Java Fußnoten hinzu