Hochzahlen in C++
-
DeathRow schrieb:
double rechnung(double a,double b) { double summe=b; for(double i=0;i<a;i++) { summe=summe*b; } return summe; }
so jetzt zufrieden?
nein
4^0.5 ist leider nicht 16.
-
psst es gibt auch den op *= *zwinker*
und wenn du mit beliebigen rellen exponenten arbeiten willst, dann freunde dich mal damit an:
a^b=exp(b* ln(a))
alternativ den exponenten in zähler und nenner aufteilen, und dann die zählerte wurzel aus a^nenner bilden(jetzt wär latex doch wirklich spannend zu können^^)
-
Hätte ich vieleicht auch noch schreiben sollen. So wie borg sagt ist es ganz wichtig das es auch mit z.B. hoch 0,333 funktioniert.
-
Was habt ihr alle gegen pow?
-
Habe es jetzt mit pow versucht und das macht ja genau das was ich gesucht habe. Vielen Dank euch allen!
-
Ich möchte gerne mit der pow Funktion und einem negativen Exponenten rechnen, ich komme aber nicht auf das richtig Ergebnis. Also zunächst möchte ich die Zahl 1.256637061 * 10^(-6) der variablen mue zuweisen. Ich vermute mal der Fehler liegt in der Syntax? Weiß jemand wo mein Fehler liegt?
float mue=pow(1.256637061 * 10 ,(-6));
-
du weißt, dass das bei 10^x nur eine andere Schreibweise ist?
1.256637061 * 10^(-6) = 0.000001256637061aber ansonsten
float mue = 1.256637061f * pow(10, -6);
greetz KN4CK3R
-
Danke für die schnelle Antwort, hat geklappt
-
template <int A, int B> struct pow { enum { value = A * pow<A, B - 1>::value }; }; template <int A> struct pow<A, 0> { enum { value = 1 }; }; template <> struct pow<0, 0> {};
Funktioniert immerhin mit Ganzzahlen
-
314159265358979 schrieb:
template <int A, int B> struct pow { enum { value = A * pow<A, B - 1>::value }; }; template <int A> struct pow<A, 0> { enum { value = 1 }; }; template <> struct pow<0, 0> {};
Funktioniert immerhin mit Ganzzahlen
mit constexpr-Support gibts es allerdings keinen Grund mehr, so etwas zu benutzen.
-
the hammer schrieb:
Also zunächst möchte ich die Zahl 1.256637061 * 10^(-6) der variablen mue zuweisen.
Dafür
pow
zu benutzen ist ziemlicher Overkill. Zahlen in Exponentialschreibweise kann man in C++ so darstellen:float mue = 1.256637061E-6;
-
camper schrieb:
314159265358979 schrieb:
template <int A, int B> struct pow { enum { value = A * pow<A, B - 1>::value }; }; template <int A> struct pow<A, 0> { enum { value = 1 }; }; template <> struct pow<0, 0> {};
Funktioniert immerhin mit Ganzzahlen
mit constexpr-Support gibts es allerdings keinen Grund mehr, so etwas zu benutzen.
Außer dem GCC >= 4.6 kann das aber noch kein Compiler, leider.
-
Ich hab sowieso so gut wie nie Potenzen, die zur Compilezeit feststehen...
Sinnvoll wäre eine Potenzklasse, die nicht als Zahl ausgerechnet wird, aber die Rechenoperationen erlaubt. Nur wenn nötig könnte man diese umrechnen oder so. Das wäre hilfreich, wenn man mit Modulo-Spielereien arbeitet oder die Zahlen zu groß für int64 sind. Aber das ist natürlich auch nur wieder ein Ausnahmefall...
Hängt aber ziemlich stark vom Einsatzgebiet ab, wenn man über std::pow oder die Template-Lösung für Compilezeit-Potenzen hinausgehen möchte, wie man da rumbasteln sollte.
-
Höchstens Zweierpotenzen, aber für die gibts ja
1 << n
.