pow()-funktion
-
Gude eine Frage und zwar bei der pow()-Funktion ist es so das man dort bei einem negativen Exponenten eine 0 rausbekommt woran liegt das?
zum Beispiel:
int a, b, ergebnis; ergebnis = pow(5, -2); cout << "ergebnis: " << ergebnis << endl;
Ausgabe:
ergebnis: 0Gibt eine andere Lösung wie man einen negativen Exponenten ausrechnen lassen kann?
Dankeschön schon voraus
-
Das Ergebnis ist nicht vom Typ int, Deine Variable ergebnis aber ...
-
@Belli hmm von welchem Datentyp ist dann mein Ergebnis?
-
nun ja, was ergibt denn zB. 2 hoch -2?
-
-
@adii950 sagte in pow()-funktion:
pow(5, -2)
Das ergibt . Das ist, wie schon gesagt, wohl kaum eine Ganzzahl.
-
@adii950 sagte in pow()-funktion:
@Belli hmm von welchem Datentyp ist dann mein Ergebnis?
Welche Datentypen kennst du denn?
-
@wob stimmt hast recht 0.04 kommt raus kann man das auch irgendwie in einem Bruch umwandeln?
-
@DirkB nun ja muss es in double ändern dann hätte ich das Problem gelöst
-
@adii950 sagte in pow()-funktion:
@wob stimmt hast recht 0.04 kommt raus kann man das auch irgendwie in einem Bruch umwandeln?
Ja.
0.04 = 0.04/1 = 0.4/10 = 4/100 = 1/25
= 1/5²
-
@DirkB genau und wie bekomme ich den Bruch am Ende als Ergebnis heraus?
-
Mit welchem Datentyp rechnet man normalerweise in C++ bzw. welche Datentypen kommen denn generell dafür in Frage?
-
@adii950 sagte in pow()-funktion:
@DirkB genau und wie bekomme ich den Bruch am Ende als Ergebnis heraus?
Zu „Dezimalbruch in Bruch wandeln“ oder „Kommazahl in Bruch wandeln“ kann man im Internet durchaus was (auch auf deutsch) finden.
-
@DirkB sagte in pow()-funktion:
@adii950 sagte in pow()-funktion:
@DirkB genau und wie bekomme ich den Bruch am Ende als Ergebnis heraus?
Zu „Dezimalbruch in Bruch wandeln“ oder „Kommazahl in Bruch wandeln“ kann man im Internet durchaus was (auch auf deutsch) finden.
Das ist aber durchaus schwieriger als man meinen mag, oder man akzeptiert unerwartete Ergebnisse. Wenn man jedenfalls das Ergebnis von
pow(5, -2)
naiv in einen Bruch umrechtet, kommt nicht 1/25 heraus. Sondern irgendein extrem langer Bruch mit einer großen Zweierpotenz im Nenner. Denn der Wert ist intern in einer Binärdarstellung und man wird niemals den Primfaktor 5 aus der Zahl 2 erzeugen können.Vielleicht wäre es für adii950s Zwecke besser, wenn man stattdessen auf pow verzichtet, und die Exponentialrechnung selber mit Brüchen durchführt? Aber ich kenne adii950s Absichten nicht ausreichend und kann nur spekulieren.
-
@adii950 sagte in pow()-funktion:
@wob stimmt hast recht 0.04 kommt raus kann man das auch irgendwie in einem Bruch umwandeln?
So herum ergibt das keinen Sinn.
Gehe andersrum vor: wenn du eine Potenz hast, wobei eine ganze Zahl und eine positive ganze Zahl ist, dann ist das Ergebnis . Betrachte also Spezialfälle, bei denen du die Potenz exakt berechnen kannst.
Im allgemeinen Fall kannst du das Ergebnis nicht in einen Bruch umwandeln. Wenn du zum Beispiel berechnest, ist das Ergebnis nicht einmal in . Der Versuch, den
double
, der dann ja nur eine Näherung ist, als Bruch darzustellen, ist dann nutzlos.