Tanelorn.net

Medien & Phantastik => Multimedia => Multimedia - Software & Betriebsysteme => Thema gestartet von: fuchsgesicht am 26.06.2014 | 08:41

Titel: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 08:41
Hey Leute,

vielleicht weiß von euch jemand Rat, ich suche eine Möglichkeit mit Fließkommazahlen zu rechnen, die mehr als 1000 Stellen haben. Die elementaren Datentypen reichen da bei weitem nicht aus. Ich hab mal IDEs und Pakete für VS12 gesehen, die hochmathematische Anwendungen können, aber ich weiß nicht mehr wo und ob Fließkommazahlen in der enormen Größe dort unterstützt werden. Weiß da jemand von euch vielleicht mehr?

gruß
fuchs
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Bangrim am 26.06.2014 | 08:56
Mit BigInteger, BigDecimal oder BigRational kann man solche Probleme angehen, wenn ich mich richtig erinnere.

Falls das alles Blödsinn ist schiebe ich das einfach mal darauf, das ich mit C das letzte mal vor 2 Jahren etwas  gemacht hab.  ~;D

Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 09:06
Mit BigInteger, BigDecimal oder BigRational kann man solche Probleme angehen, wenn ich mich richtig erinnere.

Falls das alles Blödsinn ist schiebe ich das einfach mal darauf, das ich mit C das letzte mal vor 2 Jahren etwas  gemacht hab.  ~;D

Die gibt es so in C# nicht direkt, aber ich hab mal danach gesucht und es gibt wohl Libraries dafür und haufenweise selbstgeschriebene Klassen, wobei letztere nicht einwandfrei geparsed werden können etc. Aber danke, das war wohl der Anstoß, den ich gebraucht hab. Mit den Stichwörtern kann ich mir wohl ne vernünftige Library suchen.

BigDecimal gibts immerhin bei Java, wieso nicht bei .Net? *schnief*
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Pyromancer am 26.06.2014 | 09:07
Ich hab zwar keinen Plan von C#, würde aber trotzdem gerne wissen, für welche Anwendung du 1000 Nachkomma-Stellen brauchst. :)
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 09:11
Ich hab zwar keinen Plan von C#, würde aber trotzdem gerne wissen, für welche Anwendung du 1000 Nachkomma-Stellen brauchst. :)

Bin im Praktikum und sollte den Windows-Taschenrechner nachschreiben. Klingt erstmal easy, aber wenn dann solche Feinheiten kommen, sitzt man erstmal da. Mit decimal ist da ganz schnell Schluss, ob mit Ganzzahlen oder Nachkommastellen. Calc geht da bis 9,999999999999999e+9999 und das fand ich ziemlich bemerkenswert.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Waldgeist am 26.06.2014 | 09:18
Calc geht da bis E+9999 und das fand ich ziemlich bemerkenswert.

Ich mag ja mathematisch nicht auf der Höhe sein, aber E+9999 sagt doch nichts über die Genauigkeit (also die Anzahl der Stellen, ob jetzt vor oder nach dem Komma), sondern nur darüber, wie groß die Zahl an sich sein kann. Ich glaube kaum, dass Calc so viele Stellen tatsächlich genau ist.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 09:26
Ich mag ja mathematisch nicht auf der Höhe sein, aber E+9999 sagt doch nichts über die Genauigkeit (also die Anzahl der Stellen, ob jetzt vor oder nach dem Komma), sondern nur darüber, wie groß die Zahl an sich sein kann. Ich glaube kaum, dass Calc so viele Stellen tatsächlich genau ist.

Selbst diese Zahl muss aber auch irgendwo reinpassen, angezeigt wird es ohnehin nicht, da in meinem Programm alle Zahlen, die über die Displaygröße gehen, im Exponentenformat als String geparsed werden. Aber diese Zahl muss trotzdem irgendwo hinterlegt sein. Für Vorkommastellen könnte ich natürlich bei einem BigInt bleiben, aber wenn es um Nachkommastellen bis e-9999, dann nicht mehr, da es dann nicht richtig formatiert wird. Und unterscheiden will ich auch nicht.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Pyromancer am 26.06.2014 | 09:28
Ach so, ich hatte schon gedacht, dass du eine Genauigkeit von 1000 Stellen brauchst.
So kannst du auch einfach normal mit float rechnen und die Zehnerpotenzen als int separat mitführen. Fallunterscheidung für's Display brauchst du so oder so.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 09:31
Ach so, ich hatte schon gedacht, dass du eine Genauigkeit von 1000 Stellen brauchst.
So kannst du auch einfach normal mit float rechnen und die Zehnerpotenzen als int separat mitführen. Fallunterscheidung für's Display brauchst du so oder so.

Ich bin mir da nicht so sicher, was dann mehr Arbeit macht, die Library importieren und damit arbeiten oder extrem abstrakte Methoden für die Darstellung zu schreiben.

Oh, ich seh grad, dass mein Taschenrechner dann besser wär. Mit CTRL+C kopiert der ja nicht das Exponentenformat, sondern das normale NumberStyles.Float :D
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Pyromancer am 26.06.2014 | 09:37
Ich bin mir da nicht so sicher, was dann mehr Arbeit macht, die Library importieren und damit arbeiten oder extrem abstrakte Methoden für die Darstellung zu schreiben.

Wie gesagt, ich hab von C# keinen Plan, in anderen Sprachen wäre das kein allzu großer Aufwand - und würde wahrscheinlich schneller gehen, als eine halbe Stunde lang Internet-Foren nach einer fertigen Lösung zu durchstöbern. ;)

Edit: Protipp von meinem Betreuer damals: Vorher eine Maximal-Zeit festsetzen, die man im Internet nach einer Lösung sucht. "Wenn ich in 20 Minuten nix gefunden habe, dann mach ich das selbst." Das spart oft Zeit.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: fuchsgesicht am 26.06.2014 | 09:58
Wie gesagt, ich hab von C# keinen Plan, in anderen Sprachen wäre das kein allzu großer Aufwand - und würde wahrscheinlich schneller gehen, als eine halbe Stunde lang Internet-Foren nach einer fertigen Lösung zu durchstöbern. ;)

Edit: Protipp von meinem Betreuer damals: Vorher eine Maximal-Zeit festsetzen, die man im Internet nach einer Lösung sucht. "Wenn ich in 20 Minuten nix gefunden habe, dann mach ich das selbst." Das spart oft Zeit.

Ja, C# ist da manchmal etwas umständlich. Wobei ich die Unterstützung von VS sehr genieße. Ich glaub auch, dass der Windoof-Rechner mit C oder C++ geschrieben ist, da sich die Funktion auch seit XP einfach nicht mehr geändert hat.
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Madis am 27.06.2014 | 14:15
Here you go...
http://stackoverflow.com/questions/10359372/is-there-a-bigfloat-class-in-c
Titel: Re: C# Fließkommazahlen mit über 1000 Stellen
Beitrag von: Sanguaire am 21.07.2014 | 20:16
Von Microsoft:
Zitat
Notes

In Scientific mode, Calculator is precise to 32 significant digits.

Calculator honors operator precedence when calculating in Scientific mode.

Der Datentyp Decimal unterstütz maximal 28-29 signifikante Stellen. Ich denke für ein Praktikum reicht der schon.

Es geht glaube ich viel mehr darum, wie deine Programmstruktur für einen Taschenrechner aussieht. Bei einer sauberen Struktur, lässt sich der Datentyp recht einfach durch einen anderen Datentyp (aus einer dritt Library http://mathnetnumerics.codeplex.com (http://mathnetnumerics.codeplex.com)) austauschen.