我想你在商场看到,他们中扣除或添加一定量的您的总购买量一样,四舍五入在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