Das verstehe ich beides java.lang.Long
und java.math.BigInteger
kann 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. 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.
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
undBigDecimal
. Du würdest verwendenBigDecimal
wenn Präzision entscheidend war, obwohl Wertebereich vonDouble
reicht.– Saraph
10. Oktober 2016 um 8:12 Uhr