我想你在商場看到,他們中扣除或添加一定量的您的總購買量一樣,四捨五入在Java中
- 如果您的總購買的是30.01,圓爲30.00
- 如果您總購買量爲30.03,一輪爲30.05。
- 如果您的購買總額爲30.07,則爲30.05。
- 如果您的總購買額爲30.08,則爲30.10。
我知道Java中的rounding和floor和ceil函數。但是我怎麼能實現上述目標呢? 是否有任何默認函數或utils可用?
我想你在商場看到,他們中扣除或添加一定量的您的總購買量一樣,四捨五入在Java中
我知道Java中的rounding和floor和ceil函數。但是我怎麼能實現上述目標呢? 是否有任何默認函數或utils可用?
看一看DecimalFormat。示例here。
我覺得這是你在找什麼:DecimalFormat找RoundingMode
首先,當你操縱價格在零售環境(如商場),你應該使用整型或長,而不是浮動或雙,因爲該數字始終爲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!
這功課嗎?如果是這樣,請標記爲。 – 2012-04-11 09:31:16
當你輸入'java float round'到右上角的搜索框中時,你發現了什麼?五千點擊是我得到的,當然你可以找到_something_在該列表中,以適應:-) – paxdiablo 2012-04-11 09:33:10
我們確實需要一個「作者根本沒有研究和濫用SO作爲他們的個人谷歌」親密的種類... – Voo 2012-04-11 09:34:14