Sprache: C#
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.
// 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;
}
// 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;
}
Alte URL:
/snippet/wurzel-und-potenz-berechnen-ohne-math-klasse/1592
Durch das Aufrufen der Methode Pow nutzen Sie eine Schleife.
Danke
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.