2012-04-11 73 views
-4

我想你在商場看到,他們中扣除或添加一定量的您的總購買量一樣,四捨五入在Java中

  • 如果您的總購買的是30.01,圓爲30.00
  • 如果您總購買量爲30.03,一輪爲30.05。
  • 如果您的購買總額爲30.07,則爲30.05。
  • 如果您的總購買額爲30.08,則爲30.10。

我知道Java中的rounding和floor和ceil函數。但是我怎麼能實現上述目標呢? 是否有任何默認函數或utils可用?

+1

這功課嗎?如果是這樣,請標記爲。 – 2012-04-11 09:31:16

+5

當你輸入'java float round'到右上角的搜索框中時,你發現了什麼?五千點擊是我得到的,當然你可以找到_something_在該列表中,以適應:-) – paxdiablo 2012-04-11 09:33:10

+3

我們確實需要一個「作者根本沒有研究和濫用SO作爲他們的個人谷歌」親密的種類... – Voo 2012-04-11 09:34:14

回答

1

首先,當你操縱價格在零售環境(如商場),你應該使用整型或長,而不是浮動或雙,因爲該數字始終爲2位十進制數,處理零售業總數的最佳方法是使用整數值。

因此,例如:

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

等等......這樣做,我們已經簡化了很多操作價格值的方式。 之後,您可以輕鬆創建自己的價格舍入算法

這裏的樣本一輪的價格功能應該做的正是你想要的東西:

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; 
    } 

下面是一個如何使用它的一個例子:

public static void main(String[] ars) { 

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

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

我不知道爲什麼有些用戶已經評論你的問題,因爲這是一個微不足道的問題,並且好像在這個論壇中還有其他幾個人的迴應,解釋你想要什麼...... 我甚至不知道你爲什麼得到-5這個問題......未解之謎StackOverflow!