Heim > Java > javaLernprogramm > Hauptteil

Warum löst Javas BigDecimal eine ArithmeticException für nicht terminierende Dezimalerweiterungen aus?

Mary-Kate Olsen
Freigeben: 2024-11-15 10:11:02
Original
805 Leute haben es durchsucht

Why Does Java's BigDecimal Throw an ArithmeticException for Non-Terminating Decimal Expansions?

Arithmetische Ausnahme aufgrund einer nicht terminierenden Dezimalerweiterung

Beim Durchführen einer Divisionsoperation mit der BigDecimal-Klasse von Java kann die folgende Ausnahme auftreten:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
Nach dem Login kopieren

Dieser Fehler tritt auf, wenn die Divisionsoperation einen Dezimalquotienten mit einer unendlich langen Entwicklung ergibt. Standardmäßig sind BigDecimal-Operationen exakt, d. h. sie erzeugen das exakte mathematische Ergebnis ohne Rundung.

Die Divide-Methode löst jedoch eine ArithmeticException aus, wenn das Ergebnis eine nicht terminierende Dezimalentwicklung aufweist und ein genaues Ergebnis erwartet wird (d. h. , wenn die Genauigkeitseinstellung des verwendeten MathContext-Objekts 0 ist).

Um dieses Problem zu beheben, können Sie eine Genauigkeitseinstellung ungleich Null für angeben MathContext-Objekt. Dadurch wird erzwungen, dass das Ergebnis auf eine bestimmte Anzahl von Dezimalstellen gerundet wird:

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

In diesem Fall ist 2 die Skalierung (Anzahl der Dezimalstellen) und RoundingMode.HALF_UP ist der zu verwendende Rundungsmodus . Durch Angabe einer Genauigkeit können Sie ein endliches und darstellbares Dezimalergebnis erhalten.

Das obige ist der detaillierte Inhalt vonWarum löst Javas BigDecimal eine ArithmeticException für nicht terminierende Dezimalerweiterungen aus?. 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