四舍五入为5的倍数

时间:2018-06-06 07:56:14

标签: java rounding currency

我想让我的程序更精确,并考虑到没有1,2,7个值的硬币(只有5,10,20,50,100 ..),所以有一个规则叫做四舍五入到福林。

示例:

111,112  -> 110 
113,114  -> 115
116,117  -> 115
118,119  -> 120

我的问题是我应该在JAVA中使用哪个功能来达到我的目标并获得正确的舍入值?

4 个答案:

答案 0 :(得分:6)

你可以这样写:

int roundTo5(int value)
{
    return ((value + 2) / 5) * 5;
}

这取任何福林值,加2并除以5.这使得"地板四舍五入"整数再乘以5。

0 → 2 → 0 → 0
1 → 3 → 0 → 0
2 → 4 → 0 → 0
3 → 5 → 1 → 5
4 → 6 → 1 → 5
5 → 7 → 1 → 5
6 → 8 → 1 → 5
7 → 9 → 1 → 5
8 → 10 → 2 → 10
9 → 11 → 2 → 10

答案 1 :(得分:1)

您可以使用以下方法。

public static int roundTo5(int n) {
        int t = n % 10; // get modulo 10 of n
        switch (t) {
        case 0:
        case 1:
        case 2:
            // result will be n - n%10;
            return n - t;
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            // result will be n - n %10 + 5
            return n - t + 5;
        case 8:
        case 9:
            // result will be n - n%10 + 10;
            return n - t + 10;
        }
        return 0;
}

答案 2 :(得分:0)

说a是你要整数的整数或浮点数

int round = Math.round( ((float)(a)/5) * 5);

如果您声明为浮动,则可以跳过类型转换。

答案 3 :(得分:0)

我不明白为什么没有提到它,但是以下内容似乎可以很好地完成工作:

5 * (Math.round(n / 5))