/*
* Die Klasse Zinsberechung berechnet den Ertrag durch die Zinsen nach 1,2 und
* 3 Jahren und gibt diese in Euro und Cent durch ein "," getrennt dar.
*/
/**
* @author
*/
public class Zinsberechnung {
/**
* @param args wird nicht verwendet
*/
public static void main(String[] args) {
/* Deklaration der Varibalen */
int Betrag;
int Zins;
int BetragGanz;
int BetragRest;
/* Wertezuweisung der Varibalen, ausgeschlossen von BetragGanz/Rest */
Betrag = 117;
Zins = 3;
/**
* Berechnung des Zinsertrages nach einem Jahr mit 3% Zinsen pro Jahr
* Anschließend wird der vorherige Betrag dazu addiert um den neuen
* Betrag zu erhalten
*/
BetragGanz = Zins * Betrag / 100 + Betrag;
/**
* Um Die Nachkommastellen auch noch anzeigen zu können rechnen wir
* einfach aus der vorherigen Formel den Rest aus und geben diesen als
* BetragRest aus
*/
BetragRest = Zins * Betrag % 100;
/* Ausgabe des neuen Betrages nach einem Jahr*/
System.out.print(BetragGanz);
System.out.print(",");
System.out.print(BetragRest);
System.out.println();
/**
* Das selbe machen wir nun mit den restlichen 2 Jahren
* mit dem Unterschied das wir eine Gleitkommazahl erst in eine
* Ganze Zahl umwandeln müssen 120,51 * 100 und den Zins * 100
**/
Betrag = 12051;
Zins = 300;
/**
* BetragGanz ergibt 12412 und wird mit / 10000 dividiert da der Betrag
* nun 10.000 % ergbit. Anschließend wird der Betrag dazuaddiert um die
* ganze Zahl vom neuen Betrag zu erhalten in INT.
*/
BetragGanz = (Zins * Betrag) / 10000 + Betrag;
/** BetragRest rechnet die Nachkommastellen aus durch die
* Kommaverschiebungen
**/
BetragRest = BetragGanz % 100;
/**
* Nun wird der Betragganz wieder in Dezimal ausgerechnet mit / 100
* ergibt sich dann 124,12 . Durch den Operator INT verschwinden die
* Nachkommastellen und die 124 bleit gespeichert und wird ausgegeben.
*/
BetragGanz = BetragGanz / 100;
System.out.print(BetragGanz);
System.out.print(",");
System.out.print(BetragRest);
System.out.println();
/**
* Das selbe macht man jetz mit dem letzten Jahr. Die
* Kommazahlen werden zu Ganzen Zahlen multipliziert. Der
* Betrag und der Zins werden mit 10.000 multipliziert.
*/
Betrag = 12412;
Zins = 300;
BetragGanz = (Zins * Betrag) / 10000 + Betrag;
BetragRest = BetragGanz % 100;
BetragGanz = BetragGanz / 100;
System.out.print(BetragGanz);
System.out.print(",");
System.out.print(BetragRest);
System.out.println();
}
}
Dann rechne doch einfach mit 1/10 cent in einem integer und bei der Ausgabe machst du dann ein / und ein Modulo fertig.
1000 sind dann eben 1 Euro. Wo ist das Problem?
Gruß
Claus
Und wie soll ich das dann in die Formel einpacken
BetragGanz = (Zins * Betrag) / 10000 + Betrag;
Am Ende hast du dann einen Betrag ala "127849" -> €127,849 ... und / bzw. % (Modulo) brauchst du dann um auf ganze Cent zu runden.und ich verstehe nciht ganz was du mit "Mache ein / und ein Modulo" was kommt den dazwischen und danach ?
Was meisnt du mit reinpacken? Du rechnest einfach alles mit 1/10Cent fertig. Der Formel ist es doch total egal ob du mit Euro, Cent oder eben 1/10 Cent rechnest. Es kommt doch immer das Gleiche raus. Nur eben in Euro, Cent oder 1/10 Cent. Wenn Du dann ein 1/10 Cent ergebnis hast, dann kannst du einfach
Euro = Ergebnis/1000;
Cent= ((Ergebnis+5)/10)%100
Fertig
Betrag = 124120;
Zins = 3;
BetragGanz = (Zins * Betrag ) / 1000 + Betrag;
/**
* Hier wird / 1000 gerechnet, weil der Betrag in Cent nun 1000 % beträgt
**/
BetragGanz = BetragGanz / 1000;
/**
* Bei BetragGanz wird nun das Komma um 3 Stellen verschoben um wieder
* Euro zu bekommen
*/
BetragRest = (BetragGanz + 5) / 10 % 100;
System.out.print(BetragGanz);
System.out.print(",");
System.out.print(BetragRest);
System.out.println();
Hier habe ich es mal probiert, wenn es richtig ist wie du es beschrieben hast :
Java:Betrag = 124120; Zins = 3; BetragGanz = (Zins * Betrag ) / 1000 + Betrag; /** * Hier wird / 1000 gerechnet, weil der Betrag in Cent nun 1000 % beträgt **/ BetragGanz = BetragGanz / 1000; /** * Bei BetragGanz wird nun das Komma um 3 Stellen verschoben um wieder * Euro zu bekommen */ BetragRest = (BetragGanz + 5) / 10 % 100; System.out.print(BetragGanz); System.out.print(","); System.out.print(BetragRest); System.out.println();
Leider kommt dann auch nur das selbe Ergebnis raus also 124,12 und nciht 124,13 oder mache ich da was falsch?
Warum 'mal 1000' ??Also ich habe 124,12 als Betrag. Rechne diesen zuerst * 1000 um von Euro zu Cent zu kommen.
Somit ist der Betrag erstmal = 124120
Dann rechne ich davon die 3 % Zinsen aus = 372.36 Da der INT Wert nur 372 speichert muss ich die Zinsen dann * 100 rechnen damit das Komma sich verschiebt ?
Weil sonst kriege ich den Betrag 124492.36 also 124492 dann durch 1000 sinst 124,49 Euro da mache ich doch schon was falsch oder nicht ?
Moin,
Warum 'mal 1000' ??
Und selbst wenn, sind dann 3% davon immer noch 3723,6 !!
==> 124,12 * 0,03 = 3,7236 EUR
==> ergo musst Du in diesem Fall mit 10.000 multiplizieren, um keine Nachkommastell zu verlieren
also
124,12 * 10000 = 1241200
1241200 * 0,03 = 37236
37236 / 10000 wären dann die die gesuchten 3,7236 EUR
Gruß
Klaus
Diese Aufgabenstellung ist echt nicht trivial. Gestern Abend habe ich noch zwei Stunden daran gesessen, weil ich dachte ich könnte das mit einer for-Schleife und einem 5-Zeiler lösen, nur um dann festzustellen, dass ich scheiterte. Wie lange hast du noch Zeit dafür?
Grüße
/*
/*
* Die Klasse Zinsberechung berechnet den Ertrag durch die Zinsen nach 1,2 und
* 3 Jahren und gibt diese in Euro und Cent durch ein "," getrennt dar.
*/
/**
* @author
*/
public class Zinsberechnung {
/**
* @param args
* wird nicht verwendet
*/
public static void main(String[] args) {
/* Deklaration der Varibalen */
int Betrag;
int Zins;
int BetragGanz;
int BetragRest;
/* Wertezuweisung der Varibalen, ausgeschlossen von BetragGanz/Rest */
Betrag = 117;
Zins = 3;
int rBetrag = Betrag*1000;
int rZins = rBetrag*Zins/100;
int gerundet = rBetrag+rZins+5;
System.out.print(gerundet/1000);
System.out.print(",");
System.out.println((gerundet%1000)/10);
rBetrag = rBetrag+rZins;
rZins = rBetrag*Zins/100;
rBetrag = rBetrag+rZins;
gerundet = rBetrag+5;
System.out.print(gerundet/1000);
System.out.print(",");
System.out.println((gerundet%1000)/10);
rZins = rBetrag*Zins/100;
rBetrag = rBetrag+rZins;
gerundet = rBetrag+5;
System.out.print(gerundet/1000);
System.out.print(",");
System.out.println((gerundet%1000)/10);
}
}
Guten Morgen,
es ist noch früh am Morgen, aber hier einmal eine ganz simple Aufrechnung:
Java:/* /* * Die Klasse Zinsberechung berechnet den Ertrag durch die Zinsen nach 1,2 und * 3 Jahren und gibt diese in Euro und Cent durch ein "," getrennt dar. */ /** * @author */ public class Zinsberechnung { /** * @param args * wird nicht verwendet */ public static void main(String[] args) { /* Deklaration der Varibalen */ int Betrag; int Zins; int BetragGanz; int BetragRest; /* Wertezuweisung der Varibalen, ausgeschlossen von BetragGanz/Rest */ Betrag = 117; Zins = 3; int rBetrag = Betrag*1000; int rZins = rBetrag*Zins/100; int gerundet = rBetrag+rZins+5; System.out.print(gerundet/1000); System.out.print(","); System.out.println((gerundet%1000)/10); rBetrag = rBetrag+rZins; rZins = rBetrag*Zins/100; rBetrag = rBetrag+rZins; gerundet = rBetrag+5; System.out.print(gerundet/1000); System.out.print(","); System.out.println((gerundet%1000)/10); rZins = rBetrag*Zins/100; rBetrag = rBetrag+rZins; gerundet = rBetrag+5; System.out.print(gerundet/1000); System.out.print(","); System.out.println((gerundet%1000)/10); } }
Nicht schön, aber funktional - ich habe mir erlaubt, es entsprechend ausführlich zu gestalten.
Jetzt ist zumindest mal eine funktionierende Grundlage da
Die richtige Variablenzuweisung kann dann durch Überarbeitung durch den TO hergestellt werden.
Im übrigen wird hier mit den nicht gerundeten Werten weitergerechnet - die Genauigkeit liegt bei drei "Nachkommastellen" (bezogen auf volle Euro) ...