Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1552 | Anzahl registrierter User: 1849 | Besucher online: 328
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Wurzel und Potenz berechnen ohne Math-Klasse


Autor: ECreators
Sprache: C#
Bewertung: 8,2
(1 Bewertung)
Anzahl der Aufrufe: 1123
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Formel kann eine beliebige n-Wurzel aus einer beliebigen Zahl gezogen werden, ohne die Math-Funktion SQRT und ohne Schleife.

Mit der zweiten Funktion wird potenziert, ebenfalls ohne Math-Funktion POW.


Abgelegt unter: Wurzel, Basis, Math, Potenz.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Berechnet die Wurzel (Basis-Wert)
public static double Basis(double num, double Potenz)
{
    // Bei Potenz > gleich 0, dann Pow(1/num, -(1 / Potenz))
    // Bei Potenz < 0, dann 1 / Pow(1/num, -(1 / -Potenz))
    return Potenz >= 0 ? Pow(1/num, -(1 / Potenz)) : 1 / Pow(1/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;
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.