[JAVA] Über die Behandlung von BigDecimal (mit Reflexion)

Über Java Big Decimal

Ich denke, es gibt viele Situationen, in denen Java in der Entwicklungsarbeit verwendet wird. Ich denke, dass Big Decimal beim Erstellen von Berechnungslogik verwendet werden kann. Plötzlich ist es ein anderer Typ als gewöhnliche ganze Zahlen, also war ich verwirrt und beschloss, ihn im Artikel zu belassen.

Was ist Big Decimal?

https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html> Von oracle.docs Nein, ich verstehe nicht wirklich, auch wenn es mathematisch gesagt wird. .. .. Also mit anderen Worten ... Unbeabsichtigte Ergebnisse können bei Berechnungen erzielt werden, bei denen Floats und Doubles Fehler verursachen. Zum Beispiel

double.java


 double result = 10d / 6d;
 System.out.println(result)
 //Ausgabe 1.6666666666666666666666666666666666666666

Es ist wie es ist. Wie Sie vielleicht wissen, ist das obige Beispiel zu unregelmäßig, wenn Sie die "Bankrundung" berechnen möchten, und Sie werden in Schwierigkeiten geraten. Hier kommt Big Decimal ins Spiel. Es wird häufig zur Berechnung sogenannter Buchhaltungssysteme verwendet.

BigDecimal unterscheidet sich von der normalen Zahlenberechnung und berechnet wie folgt.

BigDecimalCalc.java


//Wenn Sie 1000 vom Typ BigDecimal durch 100 vom Typ int teilen
   BigDecimal bigNum = BigDecimal.valueOf(1000);
   BigDecimal result = bigNum.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN); 
   System.out.println(result);

Verwenden Sie eine spezielle Methode zum Teilen. Normal / kann nicht verwendet werden. Weitere Informationen finden Sie unter oracle.docs.

Beim Vergleich mit 0

Wie man 0 von Big Decimal in bedingten Verzweigungen usw. behandelt Ich bin süchtig danach, wenn ich nicht daran gewöhnt bin. Natürlich war ich süchtig danach, weil ich auch Anfänger bin.

ZeroCompare.java


 if(Wert zu vergleichen.compareTo(BigDecimal.ZERO) == 0) {
  //・ ・ ・
 }

Es sieht aus wie. Mit anderen Worten, es gibt keinen Unterschied zu 0, also 0! Es wird ein Vergleich sein. Übrigens, wenn es 0 oder mehr oder 0 oder weniger ist

Compare.java


ZeroCompare.java
 if(Wert zu vergleichen.compareTo(BigDecimal.ZERO) > 0) {
  //・ ・ ・
 } 

Machen.

Zusammenfassung

BigDecimal wird anders als primitive Typen verwendet. Es ist notwendig, sich dessen bewusst zu sein. Insbesondere für Java-Anfänger wie mich ist es schwierig, versehentlich Floats und Doubles zu verwenden, wenn Sie in der tatsächlichen Entwicklungsarbeit genaue Berechnungen durchführen müssen, oder BigDecimal falsch zu verwenden und Kompilierungsfehler zu verursachen. Tu es nicht. Normalerweise interessiert es Sie nicht so sehr, aber bei der Arbeit möchte ich vor Beginn der Entwicklung genau auf den Zweck der zu entwickelnden Berechnungslogik und die erforderliche Genauigkeit hören [Reflection]

Recommended Posts

Über die Behandlung von BigDecimal (mit Reflexion)
Über den Umgang mit Null
Informationen zur Beschreibung von Docker-compose.yml
[Jackson] Eine Geschichte über das Konvertieren des Rückgabewerts des Big Decimal-Typs mit einem benutzerdefinierten Serializer.
Über das Verhalten von Ruby Hash # ==
Über die Grundlagen der Android-Entwicklung
Informationen zur Rolle der Initialisierungsmethode
Denken Sie an die 7 Regeln von Optional
Informationen zur Protokollebene von java.util.logging.Logger
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Überprüfen Sie den Inhalt der Parameter mit pry
Was ist ein Test? ・ Über die Wichtigkeit eines Tests
Informationen zur Funktionsweise von next () und nextLine ()
Informationen zur ersten Anzeige von Spring Framework
Über die Anzahl der Threads von Completable Future
Formatieren Sie den Inhalt von LocalDate mit DateTimeFormatter
Denken Sie an die Kombination von Servlet und Ajax
Überprüfen Sie den Inhalt des Argumentobjekts mit Mockito
Informationen zur Beschreibungsreihenfolge der Java-Systemeigenschaften
Verwalten Sie die Version von Ruby selbst mit rbenv
Die Geschichte der Optimierung der Android-App mit libGDX
Über die Methode
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Bereiten Sie die CentOS 8-Umgebung mit Sakura VPS vor
Geben Sie den Standardwert mit @Builder of Lombok an
Messen Sie den Abstand des Labyrinths mit der Suche nach Breitenpriorität
Über das Paket
Ich habe die Anzahl der Taxis mit Ruby überprüft
Listen Sie den Inhalt von Kategorien auf, die mit Active Hash erstellt wurden
JavaFX - Passen Sie die Größe von ImageView an andere Knoten an
[Grails] Über den Einstellungsbereich und die Einstellungselemente von application.yml
[JUnit 5] Der Umgang mit "der Referenz von assertEquals ist mehrdeutig"
Über die Nützlichkeit von Monaden aus einer objektorientierten Perspektive
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Über das Problem des Deadlocks bei der Parallelverarbeitung in gem'sprockets '4.0
Testen Sie den Inhalt einer Excel-Datei mit JUnit
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Implementieren Sie iOS14 UICollectionView mit dem minimal erforderlichen Code.
[Technisches Memo] Über die Vor- und Nachteile von Ruby
Überprüfen Sie das Ergebnis der generischen Parameterinferenz mit JShell
Etwa der Ablauf der Entwicklung von Webanwendungen mit Rails.
Steuern Sie den Spring Batch-Verarbeitungsablauf mit JavaConfig.
Die Geschichte von dto, dao-like mit Java, SQLite
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
Ausgabe über die Methode, Teil 2
Informationen zur StringBuilder-Klasse
Die Welt der Clara-Regeln (2)
Kommentar: Über die Schnittstelle
Informationen zum Trennen () von HttpURLConnection
Über die Asset-Pipeline
Über die Doppelfunktion -java
Über die Auswahl von OpenJDK
Über DI des Frühlings ①