2012-04-11 5 views
-4

Ich glaube, Sie in den Einkaufszentren gesehen haben, sie abziehen oder eine gewisse Menge an Ihre gesamte Kaufsumme hinzufügen wie,Rounding in Java

  • Wenn Ihr Gesamtkauf 30,01 ist, rund als 30.00
  • Wenn Ihr Gesamtkauf ist 30.03, Runde wie 30.05.
  • Wenn Ihr Gesamtkauf 30,07 ist, Rund wie 30.05.
  • Wenn Ihr Gesamtkauf 30.08 ist, Runde wie 30.10.

Ich kenne Rundung und Boden-und Ceil-Funktionen in Java. Aber wie kann ich die oben genannten Dinge erreichen? Gibt es eine Standardfunktion oder Utils?

+1

Sind das Hausaufgaben? Wenn ja, bitte so markieren. –

+5

Und was hast du gefunden, als du 'Java float round' in dieses Suchfeld oben rechts eingelassen hast? Fünftausend Treffer ist, was ich bekam, sicherlich könnte man _something_ in dieser Liste finden, um zu passen :-) – paxdiablo

+3

Wir brauchen wirklich einen "Autor hat überhaupt keine Forschung und missbraucht SO als ihre persönliche Google" schließen Art ... – Voo

Antwort

1

Vor allem, wenn Sie Preis im Einzelhandel (wie Einkaufszentren) manipulieren sollten Sie integer oder lang verwenden und nicht oder doppelt schweben, weil die Zahl ist immer mit 2 Dezimalstellen und der beste Weg, um im Einzelhandel zu handeln, ist mit ganzzahligen Werten.

So zum Beispiel:

30.01f ---> 3001 
30.03f ---> 3003 

Und so weiter ... zu tun, dass wir eine Menge, die Art und Weise des Umgangs Preiswerte vereinfacht. Danach können Sie einfach Ihren eigenen Preisrundungsalgorithmus erstellen.

Hier ist ein Beispiel jähriger Preis Funktion, die genau das tun sollten, was Sie wollen:

public static int roundPrice(int price) { 
     String strPrice = String.valueOf(price); 
     int len = strPrice.length(); 
     int lastDigit = Integer.valueOf(strPrice.substring(len -1)); 
     int toAdd = -lastDigit; 

     if(lastDigit > 7) 
      toAdd = 10 - lastDigit; 
     else if(lastDigit > 2) 
      toAdd = 5 - lastDigit; 

     return price + toAdd; 
    } 

Und hier ist ein Beispiel dafür, wie Sie es verwenden können:

public static void main(String[] ars) { 

     int[] nums = { 3001, 3003, 3007, 3008 }; 

     for(int n : nums) { 
      System.out.println(roundPrice(n)); 
     } 
    } 

Ich weiß nicht, warum einige Benutzer haben Ihre Frage kommentiert, da es eine triviale Frage ist, und als ob in diesem Forum einige andere Antworten sind, die erklären, was Sie wollen ... Ich kann nicht einmal herausfinden, warum Sie -5 für diese Frage bekommen haben ... Mysterien von StackOverflow!