2012-04-11 126 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!