C# Parse longer number than ulong?
Die maximal Value von einem ulong ist 18446744073709551615. Was ist aber wenn ich 9999999999999999999999999999999999999999 in eine variable stopfen will.
Wie könnte ich das tun?
4 Antworten
![](https://images.gutefrage.net/media/user/Erzesel/1497339133085_nmmslarge__0_524_1080_1080_4b38ff31970de3b94deb6a27ca8a8f01.jpg?v=1497339133000)
Wenn es sich um eine Ganzzahl handelt , gibt es [BigInt].
Währen [Double] bei sehr großen Zahlen nur mit Rundung bis zu 308 Stellen aufnehmen kann, nimmt eine BigInteger-Struktur real bis zu 2.147.483.647 Stellen haben. (Begrenzung von .Net bzgl. Max Stringlengt)
Die Übergabe einer solchen Zahl an eine Variable erfolgt als String.
bigint x = "345776432356788543335678888909976543332278899"
Auch wenn man mit bigint ganz normal +-*/ rechnen kann , empfiehlt sich das Rechnen mit den zugehörigen Methoden . https://docs.microsoft.com/en-us/dotnet/api/system.numerics.biginteger?view=net-5.0#methods
Gerade wenn man mit potentiellen "Nachkommastellen" teilen will ist DivRem unverzichtbar. (Liefert Rest)
Ich hatte vor kurzem ein Powershell-Skript zum Thema Fakultät geschrieben: https://www.gutefrage.net/frage/fakultaet-berechnen-programm-per-cmd#answer-389199199
Geschwindigkeitsrekorde musst Du von Biginterge-Aritmetik nicht erwarten.
Aber wenn man Zeit hat kann man locker mal eine Fakultät 1000000! berechnen. (Ausgabe in Datei, schreiben, das Ergebnis passt nicht in den Conolenbuffer🤪) Wie gesagt , Bigint ist bis zu 2.147.483.647 Stellen genau.
Das Powershell arbeitet ganz normal mit .Net.
Um einfach mal mit solchen Sachen zu Experimentieren brauchst du nicht mit C# zu compilieren...
Einfach mit Powershell oder Powershell-ISE on the Fly testen...
![](https://images.gutefrage.net/media/user/Palladin007/1513698609789_nmmslarge__202_0_980_980_9cc06b25d33a80bd7adc221dae634818.jpg?v=1513698610000)
double - ist Fließkommazahl und hat einen Höchstwert von 1.7976931348623157E+308
Das sollte eigentlich reichen :D
Ansonsten gibt's noch BigInteger-Struktur, die ist theoretisch unbegrenzt.
![](https://images.gutefrage.net/media/user/Erzesel/1497339133085_nmmslarge__0_524_1080_1080_4b38ff31970de3b94deb6a27ca8a8f01.jpg?v=1497339133000)
Wenn du eine schöne große Fakultät berechnen willst, wird jedes Ergebnis über 16 Stellen sehr ungenau, da ab dieser Länge gerundet wird...
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Dafür gibt es die BigInteger Struktur
https://docs.microsoft.com/en-us/dotnet/api/system.numerics.biginteger?view=net-5.0
![](https://images.gutefrage.net/media/user/Roderic/1444750288_nmmslarge.jpg?v=1444750288000)
dafür gibts Bibliotheken mit Langzahl Arithmetik.