Zinseszins // Frage nach dem Zeitraum

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
vladima
User
Beiträge: 14
Registriert: Sonntag 23. April 2017, 14:58

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
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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 :)
vladima
User
Beiträge: 14
Registriert: Sonntag 23. April 2017, 14:58

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
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@__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.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

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
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten