"Kaufmännisch runden"

  • Themenstarter Themenstarter Rig
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Rig

Gast
Hallo allerseits,

muss für einen Prog.-Kurs ein Java-Programm schreiben, das Zins- und Zinseszinsentwicklung von verschiedenen Anlagen über x Jahre berechnet.
Dabei soll "kaufmännisch gerundet" werden, darunter verstehe ich eine Vorteilsnahme der Bank, also Abrunden (auf zwei Nachkommastellen). Dazu finde ich den passenden Befehl nicht. Müsste wieder irgendwas mit math.round sein...wer kann mir weiterhelfen. Danke im Voraus.

Gruß


Der Rig
 
Math.round ist schon richtig. Nimm doch die Zahl mal 100, runde sie dann und teile anschließend wieder durch 100. Dann hast du's doch...
 
Math.floor oder auf int casten,
vorher *100.0, nachher /100.0

edit:
wenn schon zu spät, dann noch mit Hinweis:
-0.5 und Math.round ergibt das 'Immer abrunden' wie Math.floor
 
also ich weis net obs da ne extra Funktion dafür gibt, aber was ne Möglichkeit wäre:
zahl mit 100 multiplizieren, dann in ne integer Zahl umwandeln und dann wieder in ne double und durch 100 teilen, is aber glaub ich nicht soo effizient
also wäre dann zum Beispiel so:
Code:
double d = 54.07324;
int temp = (int)(d*100);
d = (double)(tmp);
d = d / 100;

oder in kurzform:
Code:
d = ((double)((int)(d*100))) / 100;

oh ups zu spät^^
 
Vielen Dank für die vielen Antworten, werde die Vorschläge ausprobieren.
 
Hi,

ich würde die Zahl lassen wie sie ist. Es kann ja später mal weiter damit gerechnet werden und dann hat man Probleme (z.B. mit dem Finanzamt 😀). Ich würde einfach nur die Ausgabe entsprechend formatieren. Beispiel aus der Insel:

Code:
import java.text.*;
public class DezimalFormatTest
{
  public static void main( String[] args )
  {
    double d = 12345.67890;
    DecimalFormat df =   new DecimalFormat  ( ",##0.00" );
    System.out.println(   df.format(d)   );           // 12.345,68
  }
}
 
jagdfalke hat gesagt.:
😉 Das soll glaube ich kein Buchführungsprogramm oder so werden 😀

Glaube ich auch. 😉 Es macht aber in der Praxis keinen Sinn, sein Hirnschmalz für etwas zu opfern, was man nicht braucht. Aber vllt. soll nur geprüft werden, ob die Kiddies noch runden können ... 😛
 
Ich würde BigDecimal für das Runden verwenden.

also z.B. auf 2 Nachkommastellen "kaufmännisch Runden"

Code:
double d = 1.2375d;
BigDecimal b = new BigDecimal(d);
b = b.setScale(2,BigDecimal.ROUND_HALF_UP);

immer Abrunden wäre dann
Code:
double d = 1.2375d;
BigDecimal b = new BigDecimal(d);
b = b.setScale(2,BigDecimal.ROUND_DOWN);
 
ein double, wer hätte das gedacht,
ist hier bisschen unnötig, da Kommazahlen eh als double zählen,
aber sicher ist sicher
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben