Java中的舍入

Java中的舍入,java,apache-commons,Java,Apache Commons,我想你在商场看到过,他们在你的购物总额中扣除或增加了一些金额,比如 如果您的总购买量为30.01,则四舍五入为30.00 如果您的总购买量为30.03,则四舍五入为30.05 如果您的总购买量为30.07,则四舍五入为30.05 如果您的总购买量为30.08,则四舍五入为30.10 我知道Java中的舍入、floor和ceil函数。但是我怎样才能做到以上这些呢? 是否有任何默认功能或UTIL可用?请查看。例如。我想这就是你要寻找的:首先,当你在零售环境(如商场)中操纵价格时,你应该使用整数或

我想你在商场看到过,他们在你的购物总额中扣除或增加了一些金额,比如

  • 如果您的总购买量为30.01,则四舍五入为30.00
  • 如果您的总购买量为30.03,则四舍五入为30.05
  • 如果您的总购买量为30.07,则四舍五入为30.05
  • 如果您的总购买量为30.08,则四舍五入为30.10
我知道Java中的舍入、floor和ceil函数。但是我怎样才能做到以上这些呢?
是否有任何默认功能或UTIL可用?

请查看。例如。

我想这就是你要寻找的:首先,当你在零售环境(如商场)中操纵价格时,你应该使用整数或长整数,而不是浮点数或双精度整数,因为数字总是以2位小数表示,在零售业中处理总价的最佳方法是使用整数值

例如:

30.01f ---> 3001
30.03f ---> 3003 
等等。。。这样做,我们简化了很多处理价格值的方法。 之后,您可以轻松创建自己的价格舍入算法

下面是一个示例round price函数,它应该完全满足您的要求:

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分。。。堆栈溢出的奥秘

这是家庭作业吗?如果是,请标记为。当您在右上角的搜索框中输入
java float round
时,您发现了什么?我得到了五千个点击率,当然你可以在列表中找到适合的东西:-)我们真的需要一个“作者根本没有做任何研究,滥用他们的个人谷歌”接近类…嗨,paxdiablo,Voo,我更新了我的查询,如果你能试着找到解决方案的话。我提出这个问题是为了稍微降低复杂性。