舍入一个数字,使其可被5整除

Iri*_*lly 15 c# math

我想要舍入一个数字(十进制),以便它可以被5整除.

例如,我有一些数字和数字后的数字:

Number        Rounded
0.4           5
3.4           5
7.3           10
Run Code Online (Sandbox Code Playgroud)

我可以用ceil这个转换doubleint并使用while循环,让他们的5的倍数,但我不知道是否有完成这个的任何聪明的办法.

谢谢.

Sör*_*ren 37

您可以先除以5然后使用Math.Ceiling来舍入值.之后,你可以再次乘以5.

int rounded = (int) Math.Ceiling(Number / 5) * 5
Run Code Online (Sandbox Code Playgroud)

  • 我不认为 double 到 int 转换可以是自动的 - 它总是必须是明确的。 (2认同)

Dr.*_*ius 10

如果你想

 f[6]  =  10
 f[-1] =  0  
 f[-6] = -5
Run Code Online (Sandbox Code Playgroud)

Sören的回答没问题.

如果你想要:

 f[6]  =  10
 f[-1] =  -5 
 f[-6] = -10  
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

f[x_] := Sign[x] Ceiling[Abs[x]/5] * 5  
Run Code Online (Sandbox Code Playgroud)

C#:

var rounded = (int) Math.Sign(x) * Math.Ceiling(Math.Abs(x)/5) * 5;
Run Code Online (Sandbox Code Playgroud)


Ani*_*Ani 6

怎么样:

5 * decimal.Ceiling(num / 5)
Run Code Online (Sandbox Code Playgroud)