2013-01-23 47 views
7

thể trùng lặp:
Round number up to the nearest multiple of 3Vòng Tính đến bội số gần nhất của 12

Tôi cần một cuộc gọi javascript rằng sẽ làm tròn số đến bội số gần nhất của 12.

Một số ví dụ:

1 -> 12

7 -> 12

14 -> 24

27 -> 36

Có ai biết của một phương pháp tốt để làm điều này? Tất cả những gì tôi có thể nghĩ đến là "Nếu giữa 1-11, hãy làm cho nó 12. Nếu giữa 13-23, làm cho nó 24, vv" Nhưng điều đó dường như không hiệu quả lắm.

+7

Chia cho 12, tròn, nhân với 12. – Pointy

+0

@epascarello Tôi xin lỗi nếu đó là một bản sao, tôi không nhìn thấy nó trước khi gửi bài – fullOfQuestions

Trả lời

12

Sử dụng Math.ceil()

var n = 13; 
var next = Math.ceil(n/12) * 12; 
+0

Điều này sẽ làm tròn thành 0 cho n <12. –

+0

@HunterMcMillen, điều đó không chính xác, nó sẽ không bằng 0 cho tất cả các giá trị nhỏ hơn 0. Nó sẽ làm tròn đến 12 gần nhất về 0. aka -25 sẽ là -24. Zero sẽ bằng không vì không phải là bội số của số 12. – epascarello

+0

thú vị. Nó có rất nhiều ngôn ngữ 5/12 sẽ dẫn đến phân chia số nguyên, Javascript xuất hiện để giữ kết quả dưới dạng một dấu phẩy động. Ít nhất đây là những gì tôi nhận được từ chrome: '5/12 = 0.4166666666666667', tôi sẽ mong đợi 0 mặc dù. –

0
function nearest(i) { 
    return Math.floor((i-1)/12)*12+12; 
} 
+0

này 1 cho ceil bởi epascarello mà làm điều tương tự nhưng một cách sạch hơn. – javabeangrinder

4

Đối với số nguyên dương:

ceiling(n/12.0) * 12 

Đối với số nguyên âm:

floor(n/12.0) * 12 

Đối với zero:

01.
return 12 
+0

Điều gì xảy ra nếu nó là số không âm? ;) – epascarello

+4

Có thể sẽ không, tôi nghe con số đó rất hiếm. –

0
function roundIt(n) { 
    return Math.ceil(n/12) * 12; 
} 
Các vấn đề liên quan