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
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...
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.
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...
Dafür gibt es die BigInteger Struktur
https://docs.microsoft.com/en-us/dotnet/api/system.numerics.biginteger?view=net-5.0
dafür gibts Bibliotheken mit Langzahl Arithmetik.