2012-06-13 51 views
25

Tôi muốn làm tròn số nguyên bằng JavaScript. Ví dụ:Javascript sử dụng vòng tròn để gần nhất 10

10 = 20 
11 = 20 
19 = 20 
24 = 30 
25 = 30 
29 = 30 
+18

Làm thế nào để '10' có thể làm tròn thành' 20'? 15, vâng; 14 và dưới đây sẽ tròn thành '10'. –

+4

Ngoài ra, bạn đã thử chính xác những gì? – Oded

+1

Tôi khuyên bạn nên thuật lại câu hỏi của mình thành "Làm cách nào để làm tròn số nguyên lên đến số 10 gần nhất?" –

Trả lời

74

này nên làm điều đó:

Math.ceil(N/10) * 10; 

đâu N là một trong những con số của bạn. Tuy nhiên, điều này không làm việc cho trường hợp đầu tiên của bạn (10 vòng đến 20, nhưng tại sao nó?).

+3

Trong trường hợp đó anh ta có thể làm 'Math.ceil ((N + 1)/10) * 10;' –

3

Math.round() làm tròn số nguyên gần nhất. Để làm tròn đến bất kỳ chữ số nào khác, hãy chia và nhân với lũy thừa mười.

Một phương pháp như vậy là thế này:

function round(num,pre) { 
    if(!pre) pre = 0; 
    var pow = Math.pow(10,pre); 
    return Math.round(num*pow)/pow; 
} 

Bạn có thể thực hiện các chức năng tương tự cho floorceiling. Tuy nhiên, bất kể bạn làm gì, 10 sẽ không bao giờ tròn thành 20.

+0

pre = pre || 0; – Metalstorm

+1

@trincot Cảm ơn bạn đã đánh cắp lỗi đánh máy! :) –

5

hay này

var i = 20; 
var yourNumber = (parseInt(i/10, 10)+1)*10; 
+3

đừng quên param thứ hai (radix) trên parseInt(). Nó có thể là 'var yourNumber = (parseInt (i/10, 10) +1) * 10;' –

+0

@JayQuerido cảm ơn ... đã hoàn thành! – silly

10

Để làm tròn một số đến nhiều nhất tiếp theo là 10, thêm một số lượng trước khi nhận được Math.ceil của một bộ phận của 10 Multiply kết quả bằng mười.

Math.ceil ((n + 1)/10) * 10;

1->10 
2->10 
3->10 
4->10 
5->10 
6->10 
7->10 
8->10 
9->10 
10->20 
11->20 
12->20 
13->20 
14->20 
15->20 
16->20 
17->20 
18->20 
19->20 
20->30 
21->30 
22->30 
23->30 
24->30 
25->30 
26->30 
27->30 
28->30 
29->30 
30->40 
35-> 40 
40-> 50 
45-> 50 
50-> 60 
55-> 60 
60-> 70 
65-> 70 
70-> 80 
75-> 80 
80-> 90 
85-> 90 
90-> 100 
95-> 100 
100-> 110 
+2

Làm cách nào bạn có thể thực hiện công việc này với các giá trị âm? gần nhất (330, -5) phải là 225, số này là 330:/ – Frexuz

+0

Nó 'tròn' cho bội số lớn nhất tiếp theo là 10, 220-229 tất cả là = 230. – kennebec

Các vấn đề liên quan