Seite 1 von 1

Zinseszins // Frage nach dem Zeitraum

Verfasst: Sonntag 23. April 2017, 15:05
von vladima
Hallo ihr Lieben,
ich bin hier gerade ein bisschen am Verzweifeln. Bin noch ganz neu in Python und so weit klappt eigentlich alles ganz gut, mein Code wird auch angenommen - aber das falsche Ergebnis kommt raus und ich komme einfach nicht dahinter, wieso.

Erstmal geht es darum, bei Angabe von K, Knull und p (Prozent) den Anlagezeitraum n zu bestimmen. (Die Rechnung hierfür sollte sein log(Knull/K)/log(1+p) = n, wenn ich richtig aufgelöst habe. Laut Taschenrechner stimmt es auch für Knull = 1000, K = 1020,10 und p = 0,01, n = 2)
Das Problem ist, dass bei meinem Code 1,999999 raus kommt und ich verstehe nicht wieso. Könnte mir da jemand helfen?

Code: Alles auswählen

Knull = 1000
K = 1020.10
p = 0.01

print("Wie viele Jahre wurde das Kapital" , K, "bei 1% angelegt?")

import math
E = math.log10(K/Knull)/(math.log10(1 + p))

print("Das Kapital wurde", E, "Jahre angelegt.") 
Rein theoretisch hab ich doch alles richtig angegeben oder übersehe ich gerade etwas?

Ganz liebe Grüße,
Laura

Re: Zinseszins // Frage nach dem Zeitraum

Verfasst: Sonntag 23. April 2017, 15:14
von __deets__
Was erwartest du denn? 2? Wenn dein Taschenrechner das ausgibt, luegt er ;)

Computer rechnen (ueblicherweise) mit Fliesskommazahlen, und die haben es in sich: https://docs.python.org/2/tutorial/floatingpoint.html

Python - im Gegensatz zu anderen Sprachen, und augenscheinlich deinem Taschenrechner - beluegt den Anwender nicht darueber, dass die Welt nicht so glatt ist, wie man sich das wuenscht.

Wenn du glatte Zahlen willst, musst du runden. Ein einfaches round(E) und du hast deine gewuenschte 2 :)

Re: Zinseszins // Frage nach dem Zeitraum

Verfasst: Sonntag 23. April 2017, 15:17
von vladima
Na sowas! Das ging ja super flott, vielen Dank! Jetzt stimmt es auch so weit. Das war mir ehrlich gesagt gar nicht so bewusst. :) Du bist gerade meine Rettung, ich hab schon echt an mir gezweifelt :D

Re: Zinseszins // Frage nach dem Zeitraum

Verfasst: Sonntag 23. April 2017, 15:33
von Sirius3
@__deets__: ›round‹ ist hier, wie so oft, falsch, weil man ja nicht runden will, sondern nur eine schöne Ausgabe:

Code: Alles auswählen

print("Das Kapital wurde {:.0f} Jahre angelegt.".format(E))
oder hier reicht auch schon

Code: Alles auswählen

print("Das Kapital wurde {} Jahre angelegt.".format(E))
weil die Abweichung zu 2 so klein ist, dass man sie von 2 nicht wirklich unterscheiden kann. 1.999999999999999 ist fast genauso falsch wie 2.

Re: Zinseszins // Frage nach dem Zeitraum

Verfasst: Montag 24. April 2017, 18:19
von Kebap
vladima hat geschrieben:Bin noch ganz neu in Python und so weit klappt eigentlich alles ganz gut
Hallo Laura, willkommen an Bord. Melde dich gern wieder hier bei deinen nächsten Fragen. :D