Frage

Ich habe versucht, das folgende Programm in C # zu berechnen pi mit unendliche Rekursion zu schreiben, aber ich halte immer verwirrt über integer / double / Dezimalteilung.

ich wirklich keine Ahnung, warum dies nicht funktioniert, so Verzeihung ich für meinen Mangel an Verständnis von stark typisierten Sachen, wie ich bin immer noch C # lernen.

Vielen Dank im Voraus!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        public static int Main(string[] args)
        {
            int numeratornext = 2;
            int denominatornext = 5;

            decimal findto = 100.0M;
            decimal pi = 0.0M;
            decimal halfpi = 1.0M;
            int seriesnum = 1;
            int seriesden = 3;

            for (int i = 0; i < findto; i++)
            {
                halfpi += Decimal.Divide((decimal)seriesnum, (decimal)seriesden);
                //System.Console.WriteLine(Decimal.Divide((decimal)seriesnum, (decimal)seriesden).ToString());
                seriesnum *= numeratornext;
                seriesden *= denominatornext;
                numeratornext++;
                denominatornext += 2;
            }

            pi = halfpi * 2;

            System.Console.WriteLine(pi.ToString());
            System.Console.ReadLine();
            return 0;
        }
    }
}
War es hilfreich?

Lösung

Ihre Verwirrung entsteht, weil Sie int und decimal verwenden, die beide besser für ganze Zahlen geeignet oder Fest Präzision finanzielle Berechnungen. Mein Vorschlag wäre, einfach zu erklären alle Ihre numerischen Variablen wie double hier, das jede Unklarheit darüber, was die Art Ihrer Rückgabewerte ist, da jede mathematische Operation auf zwei Doppel-Ergebnisse in einem weiteren Doppel zu entfernen.

(Abgesehen davon, Ihr Algorithmus ist falsch. Allerdings ist die Unrichtigkeit des Algorithmus ist ein anderes Thema von den Typen, die Sie verwenden.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top