Long gegen BigInteger

Lesezeit: 2 Minuten

Benutzer-Avatar
Fritz Duchardt

Das verstehe ich beides java.lang.Long und java.math.BigIntegerkann sehr große natürliche Zahlen aufnehmen.

Ich kenne auch den Maximalwert von Long, aber was ist der Maximalwert für BigInteger?

Und abgesehen von der Kapazität, würde BigInteger jemals besser abschneiden, wenn man mit allgemein großen ganzen Zahlen arbeitet, die immer noch in den Bereich von Long fallen?

Frage

Ist die einzige Überlegung: Ist mein Wert zu groß für Long?

  • BigInteger kann viel größere Zahlen aufnehmen als Long. stackoverflow.com/questions/12693273/…

    – AHungerArtist

    31. Juli 2015 um 13:59 Uhr


  • Wenn Long ausreicht, verwenden Sie Long. Wenn nicht, verwenden Sie BigInteger.

    – m0skit0

    31. Juli 2015 um 14:00 Uhr

  • Auf die gleiche Weise wählen Sie zwischen beliebigen numerischen Typen. Kann der betreffende Wert die Größe eines bestimmten Typs überschreiten? Verwenden Sie in diesem Fall eine größere Schrift.

    – David

    31. Juli 2015 um 14:02 Uhr

  • @Samha tolle Umschreibung – danke!

    – Fritz Duchardt

    9. November 2015 um 8:25 Uhr

  • @David Ich würde nicht sagen, dass dies bei “irgendeinem numerischen Typ” der Fall ist. Nehmen Double und BigDecimal. Du würdest verwenden BigDecimal wenn Präzision entscheidend war, obwohl Wertebereich von Double reicht.

    – Saraph

    10. Oktober 2016 um 8:12 Uhr

Benutzer-Avatar
AHungerArtist

BigInteger kann viel größere Zahlen aufnehmen als Long. BigInteger scheint in der Lage zu sein, (2 ^ 32) ^ Integer.MAX_VALUE zu halten, obwohl dies von der Implementierung abhängt (und selbst wenn die Implementierung wirklich unbegrenzt ist, wird es schließlich eine physische Ressourcengrenze geben). Siehe Erklärung hier.

Die Reichweite von Long ist [-9,223,372,036,854,775,808, +9,223,372,036,854,775,807].

Long wird besser abschneiden als BigInteger, also hängt es wirklich davon ab, wie groß Ihre Werte sein werden. Wenn sie alle unter den Maximalwert von Long fallen würden, macht es keinen Sinn, Long nicht zu verwenden. Wenn einer größer als der Long-Max-Wert wäre, müssen Sie BigInteger verwenden.

  • Beachten Sie, dass (2 ^ 32) ^ Integer.MAX_VALUE ist implementierungsabhängig. Theoretisch hat BigInteger keinen Maximalwert.

    – m0skit0

    31. Juli 2015 um 14:02 Uhr


  • Das ist also die einzige Überlegung: Ist mein Wert zu groß für Long?

    – Fritz Duchardt

    31. Juli 2015 um 14:14 Uhr

  • @FritzDuchardt Soweit ich das beurteilen kann, ja. Long wird definitiv eine bessere Leistung erbringen als BigInteger, daher ist die Größe Ihrer Werte wirklich der entscheidende Faktor.

    – AHungerArtist

    31. Juli 2015 um 19:50 Uhr


1049420cookie-checkLong gegen BigInteger

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy