Rechnung mit Zinseszins

Sasser

Erfahrenes Mitglied
Guten Tag!

Ich habe eine kleine Wirtschaftssimulation gebaut, bei welcher es auf einen Betrag, welcher in der Datenbank gespeichert ist, Zinsen gibt.

PHP:
$bank = $row [bank] + ( ( $time - $row [lastupdate] ) * ( ( $row [bank] / 100 ) * ( ( show ( interest ) / 86400 ) * $row [$bankfunction] ) ) );

# $row [bank] = Betrag in Datenbank
# $time = Aktueller Timestamp
# $row [lastupdate] = Letzte Ausrechnung der Zinsen
# show ( interest ) = Zinssatz
# $row [$bankfunction] = Gebäudestufe der Bank

Diese Rechnung funktioniert so wie Sie soll.

Mein Problem ist einfach, dass wenn ein User im Sekundentakt den Browser aktualisiert mehr logischerweise viel mehr Zinsen bekommt als ein User der nur einmal pro Stunde aktualisiert. Grund dafür ist logischerweise der Zinsenzins.

Wie kann ich die Rechnung so umstellen, sodass alle User die gleichen Zinsen bekommen?
 
Hey,

setz doch fest, das die Zinsen nur einmal am tag berechnet werden können, sprich immer um mitternacht ist es erneut möglich.

lg
 
Hab zwar keine Ahnung von der Materie, aber wird der Zins nicht einfach einmal am Tag berechnet?
 
Setz den Betrag per Anno fest. Sprich, wenn der Zins 10% pro Jahr ist, dann ist er pro Tag Wert/10/365. Das kannst Du weiter runterdividieren und den Zins auf die Zeitdifferenz anwenden, zB in Sekunden.

NeuerZinsbetrag = AlterWert/Zins/365/24/60/60 *(Zeitdifferenz[sekunden])
NeuerWert = AlterWert + NeuerZinsbetrag

Könnte trotzdem falsch sein, also nicht hauen, wenn das auch nicht die Lösung ist
mfg chmee
 
Du rechnest das also genauso wie ich.

Nur das Problem ist, wenn man diese Rechnung 10 mal in der Stunde ausführt hat man logischerweise einen höheren Wert als wenn man diese Rechnung nur 1 mal pro Stunde ausführt. Dieses Problem tritt eben auf, da man ja die Zinsen wieder verzinst.
 
Hallo!

Die kleinste Einheit ist der Zinstag, Du musst also dafür sorgen dass der Zins nur einmal pro Tag berechnet wird.
Und nicht vergessen dass das sogenannte "kaufmännische Jahr" nur 360 Tage und der Monat (mit einer einzigen Ausnahme) immer 30 Tage hat (siehe: Zinsberechnungsmethode: 30/360 bzw. 30E/360 - deutsche (kaufmännische) Zinsmethode).

Du spichst von einer Wirtschaftssimulation.
Da für tägliche bzw. monatliche/jährliche Verzinsung unterschiedliche Berechnungen durchgeführt werden müssen, ist es nicht angebracht das Datum in der Datenbank zu aktualisieren.
Ich würde also eine Datenbanktabelle mit dem Anfangskapital, dem Einzahlungszeitpunkt, dem Zinssatz, der Laufzeit (täglich/monatlich/jährlich) und ggf. den Kundendaten anlegen und daraus dann je nach Laufzeit "on the fly" die Zinsen per Script berechnen.
Dann brauchst Du Dir auch keine Gedanken darüber machen ob jemand einmal ober 100 mal den Browser aktualisiert.

Gruss Dr Dau
 
Zurück