我需要将一个数字四舍五入到最接近的5的倍数(向上或向下)。例如,这里是数字列表和它旁边的数字,它需要向上/向下四舍五入到。
12.5 10 62.1 60 68.3 70 74.5 75 80.7 80
数字只能是正数。
kupeojn61#
我没有测试过,但是5*(Math.round(f/5));应该可以工作
5*(Math.round(f/5));
xvw2m8pv2#
上限值的最近5倍
5*(Math.ceil(Math.abs(number/5)));
对于较低值
5*(Math.floor(Math.abs(number/5)));
它只给出正值。
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); }
试试这个。
yb3bgrhw4#
不如这样:
return round((number/5))*5;
vu8f3i0k5#
Gefei的解决方案是有效的,但我必须显式地转换为double,如下所示:5*(Math.round((double)f/5))
5*(Math.round((double)f/5))
2ledvvac6#
本页还有许多其他解决方案,但我相信这是最简洁的一个。为了找到给定数的x的最接近倍数,设x为倍数,num为给定数:
// The closest multiple of x <= num int multipleOfX = x * ( num / x );
在您的情况下:
int multipleOf5 = 5 * ( num / 5 );
lztngnrs7#
如果您输入的是整数,否则接受的答案将向下舍入。
int value = 37; value = (int) ( Math.round( value / 5.0 ) * 5.0 );
7条答案
按热度按时间kupeojn61#
我没有测试过,但是
5*(Math.round(f/5));
应该可以工作xvw2m8pv2#
上限值的最近5倍
对于较低值
它只给出正值。
zynd9foi3#
试试这个。
yb3bgrhw4#
不如这样:
vu8f3i0k5#
Gefei的解决方案是有效的,但我必须显式地转换为double,如下所示:
5*(Math.round((double)f/5))
2ledvvac6#
本页还有许多其他解决方案,但我相信这是最简洁的一个。
为了找到给定数的x的最接近倍数,
设x为倍数,num为给定数:
在您的情况下:
lztngnrs7#
如果您输入的是整数,否则接受的答案将向下舍入。