• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Potenzen ohne pow()

apfelfreund1

Granny Smith
Registriert
17.02.09
Beiträge
12
Hallo Apfeltalk,

wie kann ich eine Potenz berechnen? mit der Funktion aus C, pow() kommt immer ein falsches Ergebnis raus. Gibt es eine Funktion in Objective C?

Vielen vielen Dank im Voraus.

Gruß,
apfelfreund
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Falsches Ergebnis? Gib doch mal ein Code-Beispiel dazu.
 

apfelfreund1

Granny Smith
Registriert
17.02.09
Beiträge
12
if (Kapitalfl>0 & Prozentfl>0 & Jahrefl>0 ) {

End=pow(Jahrefl,(Kapitalfl*(1+(Prozentfl/100)))); <----------------------
kapital=Kapitalfl;
Prozent=Prozentfl;
Jahre=Jahrefl;
}


NSString *erg1 = [NSString stringWithFormat:mad:"%.2f", kapital];
NSString *erg2 = [NSString stringWithFormat:mad:"%.2f", End];
NSString *erg3 = [NSString stringWithFormat:mad:"%.2f", Prozent];
NSString *erg4 = [NSString stringWithFormat:mad:"%.2f", Jahre];




[capital setText:erg1];
[final setText:erg2];
[percent setText:erg3];
[years setText:erg4];




Das ganze ist ein Zinsrechner.
Also wenn ich in meinem Programm das Kapital auf 50, den Porzentsatz auf 5 % und die Jahre auf 2 setzte, kommt da 63690349... raus.
Vielen Dank für deine schnelle Antwort (-;
 

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
Moin, aus deinen Variablenbezeichnungen werde ich zwar nicht ganz schlau (Tipp: per Konvention schreibt man die übrigens einheitlich mit Kleinbuchstaben beginnend), aber kann es sein, dass du einfach Basis/Exponent vertauscht hast? :)

Zur ursprünglichen Ausgangsfrage: Eine dedizierte Potenzfunktionalität bietet Objective-C nicht. Der Weg über pow ist auf jeden Fall der richtige.

PS: Ach. Und bei deiner Division fehlt noch ein Cast, zumindest wenn ich deine Absicht richtig verstehe.
 

apfelfreund1

Granny Smith
Registriert
17.02.09
Beiträge
12
Ja stimmt mit den Variablen. Bin halt noch ziemlich neu auf dem Gebiet und achte auf so was noch nicht. Aber ich sollte es mir wirklich mal angewöhnen (-;
Also beim Programmieren bin ich ein bisschen chaotisch was Variablen anbelangt.

Aber zum Problem: Ja ich habe wirklich Basis und Exponent vertauscht, weil irgendeiner in einem Forum geschrieben hat, es würde erst der Exponent und dann die Basis kommen. Wirklich blöd, dass ich das nicht bemerkt hatte.
Entschuldige, wenn ich frage, aber was meinst du den mit Cast??? Tut mir leid, bin halt neu

Vielen vielen Dank schon mal
Gruß,

apfelfreund
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Gibt es eine Funktion in Objective C?
Ja. NSDecimalNumber bietet dafür decimalNumberByRaisingToPower: und decimalNumberByRaisingToPower:withBehavior: .

Entschuldige, wenn ich frage, aber was meinst du den mit Cast???
Es ist gemeint, dass Du die Datentypen wie erfordert umwandelst.

Ja ich habe wirklich Basis und Exponent vertauscht, weil irgendeiner in einem Forum geschrieben hat, es würde erst der Exponent und dann die Basis kommen. Wirklich blöd, dass ich das nicht bemerkt hatte.
In der Doku steht das üblicherweise richtig drin.

Also beim Programmieren bin ich ein bisschen chaotisch was Variablen anbelangt.
Ganz schlecht. Das solltest Du sofort ändern.

Verwende Codetags wenn Du irgendwo Code postest.


Code:
if (Kapitalfl>0 & Prozentfl>0 & Jahrefl>0 ) {...
Bist Du Dir sicher, dass Du das willst?
 

Ares83

Hibernal
Registriert
10.10.07
Beiträge
2.011
Du solltest dir angewöhnen, wie Pii schon andeutete, mit der Dokumentation zu arbeiten, die ist deine Quelle für 90% deiner Arbeit, den Rest kannst du in einem Forum nachfragen. Damit bekommst du ein viel tieferes Verständnis von der Materie und kopierst nicht nur dumm aus einem Forum.
 

Miralem23

Kaiser Wilhelm
Registriert
24.11.08
Beiträge
178
if (Kapitalfl>0 & Prozentfl>0 & Jahrefl>0 )

Das kann nicht klappen, Meiner Meinung nach muss da && stehe.

Was man vllt auch mal probieren kann ist, wenn man mit potenzen rechnet, ich kenn das aus Python.

a = 5
b = a ** 2
print(b)
>>> 25

Das doppelte Mal Zeichen veranlasst den interpreter ein x "Hoch" irgendwas