2017-08-03 8 views
0

Guten Abend,Math.round runden keine Zahlen

Mein Code wird nicht abgerundet, und ich weiß nicht warum! Bitte helfen Sie!

import java.util.*; 
import java.math.*; 

public class Arithmetic { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 

     int tipPercentage; // tip percentage 
     int taxPercentage; // tax percentage 
     int totalTip;  // total tip 
     int totalTax;  // total tax 
     double mealCost; // original meal price 
     double totalCost = 0.0; // total meal price 

     // Write your calculation code here. 
      mealCost = scan.nextDouble(); 
      tipPercentage = scan.nextInt(); 
      taxPercentage = scan.nextInt(); 

      totalCost += mealCost; 
      totalCost += mealCost*tipPercentage/100; 
      totalCost += mealCost*taxPercentage/100; 


     // cast the result of the rounding operation to an int and save it as totalCost 
      mealCost=(int)Math.round(totalCost); 


     // Print your result 
     System.out.println (" The total meal cost is " + totalCost + " dollars. "); 
    } 
} 
+0

Ihre Frage ist ein wenig vage, können Sie es bitte mit ein bisschen mehr Details bearbeiten, was das Problem ist –

+1

Sie haben einen Tippfehler, aber der ganze Ansatz ist irreführend. Siehe meine Antwort im Duplikat nach dem Grund. Wenn Sie Dezimalstellen benötigen, müssen Sie eine Dezimalzahl verwenden, z. über 'BigDecimal' oder' DecimalFormat', und in jedem Fall sollten Sie 'BigDecimal' für Geld, nicht Fließkomma verwenden. – EJP

Antwort

-1

mealCost ist die Variable, die Sie zu runden versuchen, während totalCost die Variable ist, die Sie ausdrucken und dem Benutzer anzeigen.

System.out.println (" The total meal cost is " + totalCost + " dollars. ");

Auch wenn Kosten Anzeige könnte es eine gute Idee sein, auf das nächste Hundertstel abzurunden. Sie können dies tun, indem sie so etwas wie

mealCost=Math.round(totalCost*100)/100.0

Schließlich sagen, sollten Sie den Benutzer auffordern, damit sie wissen, was sie in der Konsole eingeben.

+0

Vielen Dank! das macht sehr viel Sinn. –

+0

Natürlich möchten Sie in den obigen Beispielen wahrscheinlich mealCost zu totalCost ändern ... Ich war mir nur nicht sicher, welche Sie ausdrucken wollten. –

+0

sollten Sie BigDecimal für Geld, nicht Fließkomma verwenden. –

0

Sie sind Anfügen totalCost zu Ihrer gedruckten Zeichenfolge, wenn Sie einen gerundeten Wert mealCost zuweisen. Mit anderen Worten,

mealCost=(int)Math.round(totalCost); 

sollte

totalCost=(int)Math.round(totalCost); 

Zusätzlich werden, können Sie Eingabeaufforderungen hinzufügen, bevor sowie vielleicht Ihre Runden in den Input des überdenken, wenn Sie es wirklich auf den nächsten Dollar wollen.

+0

So funktionierte das tatsächlich, da es meine Gesamtänderung von 15.36 auf 15.0 zeigt ... Gibt es eine Möglichkeit, den .0 Anteil vom Endergebnis zu entfernen? –

+0

Wenn Sie das .0 loswerden wollen, dann können Sie mealCost einfach als Int in Ihre Druckanweisung eingeben. –