Zinsberechnung und Runden
-
Hello again...
Habe ein Problem mit der Ungenauigkeit bei der monatlichen Zinsberechnung.
Ist jemand auf diesem Gebiet bewandert ??
Das Prog gibt mir immer zuviel aus.
Hab versucht zu runden, oder alles Integerwerte zu nehmen...leider auch da ohne Erfolg.
Schaut es Euch bitte an.
Irgendwas muss mit dem Runden nicht stimmen.....aber ...??
Danke.Pilsbaron
void __fastcall TForm1::ButtonStartClick(TObject *Sender) { double einmalzahlung, anlagebetrag, zinssatz, einzahlungsdauer; double guthaben=0, zinsen; int i=1, w, monate; bAnhalten=false; bSTOP=false; //Auslesen der Daten einmalzahlung = EditEinmalzahlung->Text.ToDouble(); anlagebetrag = EditRegelEinzahlung->Text.ToDouble(); zinssatz = EditWertentwicklung->Text.ToDouble(); einzahlungsdauer = EditEinzahlungsdauer->Text.ToDouble(); //Auswahl -> monatliche Einzahlung if(RadioButtonMonatlich->Checked==true) { monate = einzahlungsdauer * 12; guthaben = anlagebetrag; while(bSTOP==false) { while((i<=monate) && (!bAnhalten)) { zinsen = (zinssatz * guthaben * 1) / (12 * 100); RoundTo(zinsen, -2); guthaben = guthaben + zinsen; RoundTo(guthaben, -2); if(i % 12 == 0) //alle 12 Monate { LabelJahre->Caption = IntToStr(i / 12); LabelBisher->Caption = FloatToStrF((anlagebetrag * i),ffNumber, 10, 2); LabelGuthaben->Caption = FloatToStrF(guthaben, ffNumber, 10, 2); for(w=0;w<=50;w++) { Application->ProcessMessages(); Sleep(20); } } guthaben = guthaben + anlagebetrag; Application->ProcessMessages(); i++; } Application->ProcessMessages(); } Application->ProcessMessages(); } }
-
Debugger schmeißen und den Inhalt der einzelnen Variablen kontrollieren!
MfG
xy
-
Pilsbaron,
Pilsbaron schrieb:
Hab versucht zu runden, oder alles Integerwerte zu nehmen...
versuche mal, mit dem Typ Currency zu arbeiten. Der ist für solches Rundungs-Gewurksel vorgesehen. (Infos siehe BCB-Hilfe)