11 Stimmen

BigInteger oder nicht BigInteger?

In Java sind die meisten primitiven Typen vorzeichenbehaftet (ein Bit wird zur Darstellung von +/- verwendet), und wenn ich die Grenzen des Typs überschreite, kann ich daher unerwartete Ergebnisse wie negative Zahlen erhalten.

Gibt es eine bessere Lösung als mit BigInteger für diese, da BigInteger hat Performance-Probleme und Sie müssen die Klasse Methoden für grundlegende Arithmetik anstelle der Sprache Operatoren (Ruinen Lesbarkeit) verwenden?

12voto

danben Punkte 77356

Nein, es gibt keine bessere Lösung. Wenn Sie mit Werten arbeiten, die nicht in einen long oder double passen, müssen Sie einen Referenztyp wie BigInteger und Java unterstützt keine Überladung von Operatoren.

Technisch gesehen könnte man eine Zuordnung zwischen vorzeichenbehafteten und vorzeichenlosen Werten vornehmen, aber wenn Ihr Ziel ein sauberer und einfacher Code ist, dann ist das überhaupt nicht der richtige Weg.

5voto

Yuvi Masory Punkte 2624

Scala ist hier wirklich die Lösung. In dieser Sprache sind "Operatoren" eigentlich nur fest definierte Methoden und können für beliebige Klassen definiert werden. In Ihrem Fall sind sie sogar schon in der Standardbibliothek enthalten. So können Sie die Mächtigkeit spezieller Zahlendarstellungen, aber die saubere Syntax der Java-Primitivtypen nutzen.

Scala ist kampferprobt und wird mit Ihrem Java-Code vollständig interoperabel sein.

1voto

Daniel Punkte 26740

Die einzige Möglichkeit, trotzdem eine schöne Geschäftslogik zu haben, ist die Verwendung einer Skriptsprache, die man zu Java-Klassen kompiliert. Intern können Sie dann BigInteger verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X