Feedback

C# - Wurzel und Potenz berechnen ohne Math-Klasse

Veröffentlicht von am 15.01.2012
(2 Bewertungen)
Mit dieser Formel kann eine beliebige n-Wurzel aus einer beliebigen Zahl gezogen werden, ohne die Math-Funktion SQRT und ohne Schleife (bei Wurzel ziehen .. Basis-Methode).

Mit der zweiten Funktion wird potenziert, ebenfalls ohne Math-Funktion POW.
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

// Berechnet die Wurzel (Basis-Wert)
public static double Basis(double num, double Potenz)
{
    return Pow(num, 1 / Potenz);
}

// Potenziert eine Basis-Zahl um eine beliebige Potenz
public static double Pow(double basis, double exp)
{
    // val = Ergebnis (Erste = 1)
    // r = Gesamtschritt, beginne beim ersten (Erste = Schritt 1)
    // step = Schrittweite
    // step ist der kleinere Wert zwischen 0 und 1 (Immer zw. 0 und 1)

    // Initialisierung der Variablen
    double     
         val = 1, 
         r = 0,
         step = ((exp - r) < 1 ? (exp - r) : (1));

    // den nächsten Schritt machen
    r += step;

    // Solange die Potenz nicht erreicht ist rechne weiter
    while (r <= exp)
    {
       // multipliziere das Ergebnis mit diesem Schrittwert zur Basis
       val *= step * basis;

       // Berechne die nächste Schrittweite (kleinerer Wert zwischen 0 und 1)
       step = exp - r < 1 ? exp - r : r;

       // Wenn der Potenzwert erreicht ist, beende die Berechnung, keine weiteren Schritte nötig
       if (step == 0) break;

       // Schritt machen
       r += step;
    }

    // Gib das Ergebnis zurück
    return val;
}
Abgelegt unter Wurzel, Basis, Math, Potenz.

3 Kommentare zum Snippet

NicoMcF schrieb am 22.02.2012:
Durch das Aufrufen der Methode Pow nutzen Sie eine Schleife.
ECreators schrieb am 06.03.2012:
Danke
andro schrieb am 06.03.2018:
Der Code liefert falsche Ergebnisse.

Für Basis 2 und Exponent 16 liefert er das Ergebnis 2048.
Die Potenz von 2 hoch 16 ist aber 65536.
 

Logge dich ein, um hier zu kommentieren!