Autor Thema: C# Fließkommazahlen mit über 1000 Stellen  (Gelesen 3292 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
C# Fließkommazahlen mit über 1000 Stellen
« 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
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Bangrim

  • Gast
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #1 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

« Letzte Änderung: 26.06.2014 | 09:00 von Bangrim »

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #2 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*
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Pyromancer

  • Gast
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #3 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. :)

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #4 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.
« Letzte Änderung: 26.06.2014 | 09:17 von fuchsgesicht »
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Offline Waldgeist

  • Erster Überlebender
  • Famous Hero
  • ******
  • Beiträge: 2.488
  • Username: Waldgeist
    • 5 Room Dungeons
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #5 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.
5 Room Dungeons: http://5rd.jlj4.com/

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #6 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.
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Pyromancer

  • Gast
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #7 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.

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #8 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
« Letzte Änderung: 26.06.2014 | 09:34 von fuchsgesicht »
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Pyromancer

  • Gast
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #9 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.
« Letzte Änderung: 26.06.2014 | 09:40 von Pyromancer »

Offline fuchsgesicht

  • Experienced
  • ***
  • ANU CHEEKI BREEKI IV DAMKE
  • Beiträge: 225
  • Geschlecht: Männlich
  • Username: fuchsgesicht
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #10 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.
"In Sovietrussland verarbeiten deine Erfahrungen dich!"

Offline Madis

  • Fartfinder
  • Hero
  • *****
  • >:D
  • Beiträge: 1.035
  • Geschlecht: Männlich
  • Username: Madis
    • rumming.de
David Mitchell: “Just because you’ve got a smartphone and Facebook account, you needn’t think you suddenly matter!”

Nachts steh' ich heimlich auf dem Klodeckel und zieh' die Klamotten von meinem Vater an.

Offline Sanguaire

  • Experienced
  • ***
  • Beiträge: 442
  • Geschlecht: Männlich
  • Username: Sanguaire
    • Meine Page
Re: C# Fließkommazahlen mit über 1000 Stellen
« Antwort #12 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) austauschen.
« Letzte Änderung: 21.07.2014 | 21:30 von Sanguaire »