数値を最も近い5の倍数(切り上げまたは切り下げ)に丸める必要があります。たとえば、ここに数字のリストとその隣の数字を示します。
12.5 10
62.1 60
68.3 70
74.5 75
80.7 80
数字は正の数のみです。
テストしていませんが、5*(Math.round(f/5));
は動作するはずです
上限値に最も近い5の倍数
5*(Math.ceil(Math.abs(number/5)));
低い値
5*(Math.floor(Math.abs(number/5)));
正の値のみを提供します。
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);
}
これを試して。
Gefeiのソリューションは機能していますが、次のように明示的にdoubleに変換する必要がありました:5*(Math.round((double)f/5))
このようなものはどうですか:
return round((number/5))*5;
このページには他にも多くのソリューションがありますが、これは最も簡潔なものだと思います。
与えられた数値に対して最も近いxの倍数を見つけるには、
xを倍数にし、numを指定した数にします。
// The closest multiple of x <= num
int multipleOfX = x * ( num / x );
あなたの場合:
int multipleOf5 = 5 * ( num / 5 );