Ganze grosse Zahlen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von georgyboy.

    Ganze grosse Zahlen

    Hallo
    Ich bin Anfänger in VB. Ich benutze Visual Basic 2010 Express und habe folgendes Problem, für das ich trotz stundenlanger Suche nichts Brauchbares fand:
    Ich möchte PI berechnen, auf 150 Stellen, was mit den bei Wikipedia gefundenen Formeln auf der Basis von unendlichen Produkten eine typische Problemstellung für VB wäre, wenn......
    wenn VB mit so grossen Zahlen rechnen könnte. Die einzige Datentyp, der akzeptiert wird, ist "String", doch dieser lässt sich in der Ausgabe nicht in 5er-Blöcke nach dem Muster
    3.14159 26535 89793 formatieren und die Differenz meiner Resultate mit dem wahren Wert von Pi, der mir auf 40'000 Stellen genau vorliegt, ist nicht möglich. Mit dem
    Datentyp Double werden 14 Nachkommastellen wiedergegeben, dann folgen nur noch Null. Etwas gar wenig ......

    Nichts gebracht hat: Dim Pi as Biginteger(ofDecimal). Dim Pi as Object, Public Structure BigDecimal (schwafelt etwas von End of-Anweisung, dabei steht End Structure in meinem Code).....

    Als Ausgabe verwende ich: lblWertxxxx.Text = Format(Pi, "0.##### ##### #####), das multipliziert Pi mit etwa 10 hoch 30 mit vielen Null nach 879.

    Wer weiss Rat? Besten Dank.
    Hi
    das wird nicht so einfach gehen, wie du dir das vorstellst. Einfaches Rechnen wäre möglich, indem du die Operationen von BigInteger verwendest und es zum Schluss durch eine eigene Formattierungsfunktion jagst. Ich glaube nicht, dass du dir das als Anfänger schon antun willst. Alternativ könntest du dir beispielsweise eine Struktur für allgemeingültige reelle Zahlen schreiben. @Artentus hat sowas glaub' ich sogar mal gemacht.

    Gruß
    ~blaze~
    Jau, genauer gesagt das hier: https://github.com/Artentus/MathUtils/blob/master/MathUtils/Rational.cs
    Das Ding hat theoretisch unendliche Gleitkommagenaugikeit, wird aber bei zunehmender Anzahl von Stellen immer langsamer. Unterstützt werden (teilweise auch aufgrund von fehlender Geschwindigkeit) nur die Grundrechenarten +,-,*,/,%.
    Ich lass's, das schaffe ich als Anfänger tatsächlich nicht. Immerhin gibt mir mein Programm 14 (richtige) Stellen zurück. Das zu programmieren, brauchte ich zwei Tage, was wenig ist im Vergleich zu Ludolph van Ceulen, der im 16. Jh. 30 Jahre seines Lebens aufwendete, um Pi auf 35 Stellen zu berechnen. Archimedes schaffte es "bloss" auf 2 richtige Nachkommastellen. Und das geht eben nur mit Wurzeln und Potenzen, was der Datentyp biginter auch nicht unterstützt.

    Euch besten Dank für die prompten Antworten.