Heim > Java > javaLernprogramm > Warum führt die Division von BigDecimals ohne MathContext zu einer Ausnahme „Nicht terminierende Dezimalerweiterung'?

Warum führt die Division von BigDecimals ohne MathContext zu einer Ausnahme „Nicht terminierende Dezimalerweiterung'?

Susan Sarandon
Freigeben: 2024-11-15 09:58:02
Original
416 Leute haben es durchsucht

Why Does Dividing BigDecimals Without a MathContext Result in a

Nicht-terminierende Dezimalerweiterungsausnahme bei der Division von BigDecimals

Beim Teilen von zwei BigDecimal-Objekten ohne Angabe eines MathContext kann die Operation zu einem führen Ausnahme „ArithmeticException: Nicht terminierende Dezimalentwicklung; kein exakt darstellbares Dezimalergebnis“.

Dies liegt daran, dass der Quotient bestimmter Divisionen (z. B. 1 dividiert durch 3) eine unendlich lange Dezimalentwicklung aufweist. Wenn die Genauigkeit auf 0 (Standard) eingestellt ist, muss das genaue Ergebnis berechnet werden. Wenn der Quotient eine nicht terminierende Erweiterung hat, wird eine Ausnahme ausgelöst.

Lösung

Um dies zu beheben, muss ein MathContext mit einem bestimmten Maßstab und Rundungsmodus bereitgestellt werden . Der folgende Code demonstriert dies:

a.divide(b, 2, RoundingMode.HALF_UP)
Nach dem Login kopieren

In diesem Beispiel ist die Skalierung auf 2 und der Rundungsmodus auf RoundingMode.HALF_UP eingestellt. Dadurch wird sichergestellt, dass das Divisionsergebnis auf eine bestimmte Skala gerundet wird und die Ausnahme vermieden wird.

Ausführlichere Informationen finden Sie in der Java 11 BigDecimal-Dokumentation oder in externen Ressourcen wie diesem Blogbeitrag.

Das obige ist der detaillierte Inhalt vonWarum führt die Division von BigDecimals ohne MathContext zu einer Ausnahme „Nicht terminierende Dezimalerweiterung'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage