Java:舍入到最接近的5的倍数(向上或向下)

oiopk7p5  于 2023-03-11  发布在  Java
关注(0)|答案(7)|浏览(279)

我需要将一个数字四舍五入到最接近的5的倍数(向上或向下)。例如,这里是数字列表和它旁边的数字,它需要向上/向下四舍五入到。

12.5  10
62.1  60
68.3  70
74.5  75
80.7  80

数字只能是正数。

kupeojn6

kupeojn61#

我没有测试过,但是5*(Math.round(f/5));应该可以工作

xvw2m8pv

xvw2m8pv2#

上限值的最近5倍

5*(Math.ceil(Math.abs(number/5)));

对于较低值

5*(Math.floor(Math.abs(number/5)));

它只给出正值。

zynd9foi

zynd9foi3#

public static void main(String args[]) {
    double num = 67.5;
    if (num % 5 == 0)
        System.out.println("OK");
    else if (num % 5 < 2.5)
        num = num - num % 5;
    else
        num = num + (5 - num % 5);
    System.out.println(num);

}

试试这个。

yb3bgrhw

yb3bgrhw4#

不如这样:

return round((number/5))*5;
vu8f3i0k

vu8f3i0k5#

Gefei的解决方案是有效的,但我必须显式地转换为double,如下所示:5*(Math.round((double)f/5))

2ledvvac

2ledvvac6#

本页还有许多其他解决方案,但我相信这是最简洁的一个。
为了找到给定数的x的最接近倍数,
设x为倍数,num为给定数:

// The closest multiple of x <= num
int multipleOfX = x * ( num / x );

在您的情况下:

int multipleOf5 = 5 * ( num / 5 );
lztngnrs

lztngnrs7#

如果您输入的是整数,否则接受的答案将向下舍入。

int value = 37;
value = (int) ( Math.round( value / 5.0 ) * 5.0 );

相关问题