2017-11-23 2 views
0

Ok, wie runde ich eine Dezimalzahl in die 2. Dezimalstelle statt nur die erste Dezimalstelle? Ich hatte ein Menü zu erstellen, in dem das „Kunde“ Aufträge Essen und wir hatten die Zwischensumme und Steuern haben und enthalten Trinkgeld. Mein Code funktioniert gut, es sei denn die Gesamtsumme so etwas wie $ 3.8 ist, wenn es 3,80 $ sein sollte. Wie kann ich das beheben, indem ich nur Math.round() verwende? Mein Code für das Geld Teil des Menüs istRunde Dezimalstelle auf die zweite Dezimalstelle

double SUBtotal = subTotal * 100.00; 
    System.out.println("Your current total is: $" + 
    Math.round(SUBtotal)/100.00); 
    System.out.println("Options:"); 
    System.out.println(" 1. Order another item"); 
    System.out.println(" 2. Checkout"); 

     mainOp = scan.nextInt(); 
     if (mainOp==2) 
    { 

     System.out.println(Order); 

     double tax = subTotal * 0.0825; 
     double taxSubtotal = tax + subTotal; 
     double please = taxSubtotal * 100.00; 
     double taxSubtotal2 = Math.round(please)/100.00; 
     System.out.println("\nSubtotal (with tax): $ " + taxSubtotal2); 

     System.out.println("Tip: $"); 
     double tip = scan.nextDouble(); 
     double total = taxSubtotal + tip; 
     double total2 = total * 100.00; 
     double total3 = Math.round(total2) /100.00; 
     System.out.println("Final Total: $" + total3); 

     System.out.println(); 

     System.out.println("Thank You For Ordering!"); 


    } 

Vielen Dank!

+0

https://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java – user2173372

+1

Bitte Ihre Frage nicht mutwillig zerstören. – LW001

Antwort

1

Hier ist ein kleines Code-Snippet mit DecimalFormat, um Ihr Problem zu lösen.

DecimalFormat decimalFormat = new DecimalFormat("#0.00"); 
System.out.println(decimalFormat.format(total3)); 

Dies wird Ihren Dezimalwert als eine Zeichenfolge mit zwei Nachkommastellen gedruckt. Zusätzlich können Sie eine DecimalFormat Variable deklarieren und verwenden Sie es überall aus Ihrem Code durch, wo immer Sie einen 2 Dezimalstellewert angezeigt werden soll.

Dank

+0

scheint nicht zu funktionieren, weil BlueJ nicht zu erkennen scheint „DecimalFormat,“ Gibt es eine Möglichkeit, einen Fall zu verwenden/if-Anweisung mit Math.round() oder etwas entlang der Linien wie das? –

0

Wenn Sie anstelle von 3,8-3,80 möchten, Code unten verwenden, nachdem insgesamt bekommen. String ist das was du willst.

DecimalFormat f = new DecimalFormat ("## 00".);

String d = f.format(taxSubtotal2);