2011-02-02 50 views
13

tôi muốn làm tròn lên một số (thập phân) để nó chia hết cho 5.Làm tròn lên một số để nó chia hết cho 5

Ví dụ, tôi có một vài con số và những con số sau khi làm tròn lên:

Number  Rounded 
0.4   5 
3.4   5 
7.3   10 

tôi có thể sử dụng để chuyển đổi ceil này double để int và sử dụng một vòng lặp while để có được chúng với nhiều tiếp theo của 5, nhưng tôi đã tự hỏi nếu có bất kỳ cách khéo léo thực hiện điều này.

Cảm ơn.

+0

là đầu vào của bạn một 'decimal' hoặc một' double'? – AakashM

+0

http://stackoverflow.com/questions/752655/round-in-ms-sql-on-0-05-or-0-00 Đây là giải pháp cho SQL – adopilot

Trả lời

6

Làm thế nào về:

5 * decimal.Ceiling(num/5) 
35

Trước tiên, bạn có thể chia cho 5 và sau đó sử dụng Math.Ceiling để làm tròn giá trị. Sau đó, u có thể nhân với 5 lần nữa.

int rounded = (int) Math.Ceiling(Number/5) * 5 
+0

vì 'tròn' là int, không loại đúc được tự động ? – IrishBelly

+1

tôi không nghĩ rằng một đôi để int đúc có thể được tự động - nó luôn luôn phải được rõ ràng. –

9

Nếu bạn muốn

f[6] = 10 
f[-1] = 0 
f[-6] = -5 

Sören's answer là OK.

Nếu thay vào đó bạn muốn:

f[6] = 10 
f[-1] = -5 
f[-6] = -10 

bạn có thể làm một cái gì đó như:

f[x_] := Sign[x] Ceiling[Abs[x]/5] * 5 

C#:

var rounded = (int) Math.Sign(x) * Math.Ceiling(Math.Abs(x)/5) * 5; 
Các vấn đề liên quan