Heim > Java > javaLernprogramm > Wie gehe ich mit nicht terminierenden Dezimalerweiterungen mit BigDecimal um?

Wie gehe ich mit nicht terminierenden Dezimalerweiterungen mit BigDecimal um?

Mary-Kate Olsen
Freigeben: 2024-11-24 11:45:14
Original
306 Leute haben es durchsucht

How to Handle Non-Terminating Decimal Expansions with BigDecimal?

Umgang mit nicht terminierenden Dezimalerweiterungen und BigDecimal

Beim Arbeiten mit BigDecimal-Objekten ist es wichtig, sich der Möglichkeit nicht-terminierender Dezimalerweiterungen bewusst zu sein. abschließende Dezimalentwicklungen. Betrachten Sie den folgenden Code:

BigDecimal a = new BigDecimal("1.6");
BigDecimal b = new BigDecimal("9.2");
a.divide(b)
Nach dem Login kopieren

Dieser Code versucht, die beiden BigDecimal-Objekte zu dividieren, löst aber stattdessen die folgende Ausnahme aus:

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

Diese Ausnahme wird ausgelöst, weil der genaue Quotient von a und b hat eine nicht terminierende Dezimalentwicklung. Standardmäßig sind BigDecimal-Operationen exakt, das heißt, sie geben das genaue Ergebnis zurück, selbst wenn es eine unendliche Dezimalentwicklung hat. Wenn die Genauigkeit jedoch auf 0 eingestellt ist (was standardmäßig der Fall ist), wird der Rundungsmodus ignoriert und es wird keine Rundung durchgeführt.

Um diese Ausnahme zu beheben, müssen Sie einen Rundungsmodus und eine Rundungsgenauigkeit angeben. Zum Beispiel:

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

In diesem Fall wird die Division mit einer Genauigkeit von 2 durchgeführt und das Ergebnis wird mit dem Rundungsmodus HALF_UP gerundet. Dies führt zu einer endlichen Dezimalentwicklung.

Weitere Informationen zum Umgang mit nicht terminierenden Dezimalentwicklungen mit BigDecimal finden Sie in der Java-Dokumentation oder in relevanten Ressourcen wie Blogbeiträgen und Tutorials.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht terminierenden Dezimalerweiterungen mit BigDecimal um?. 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