Cách làm tròn một số nguyên lên hoặc xuống 10 gần nhất bằng Javascript


82

Sử dụng Javascript, tôi muốn làm tròn một số được người dùng chuyển đến gần nhất 10. Ví dụ: nếu 7 được chuyển, tôi sẽ trả về 10, nếu chuyển 33, tôi sẽ trả về 30.

Câu trả lời:


161

Chia số cho 10, làm tròn kết quả và nhân lại với 10:

var number = 33;
console.log(Math.round(number / 10) * 10);


12
Kỹ thuật này cũng hoạt động sử dụng Math.floor, nếu bạn muốn ngăn chặn làm tròn lên
Alex W

11
Bạn có thể sử dụng phương pháp Math.ceil để làm tròn.
Kerem Demirer 27/07/16


19

Ở đâu i là một int.

Để làm tròn xuống bội số gần nhất của 10 tức là

11 trở thành 10
19 trở thành 10
21 trở thành 20

parseInt(i / 10, 10) * 10;

Làm tròn đến bội số gần nhất của 10 tức là

11 trở thành 20
19 trở thành 20
21 trở thành 30

parseInt(i / 10, 10) + 1 * 10;  

4
Không nên là: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331

@ user3924331, bạn nói đúng. Câu trả lời đúng là (parseInt (i / 10, 10) + 1) * 10; Các bản chỉnh sửa phải có ít nhất 6 ký tự nên không thể chỉ thêm hai dấu ngoặc đơn đó ... ¯_ (ツ) _ / ¯
Fernando

Lên đến 10 gần nhất cộng thêm +10 cho giá trị 100, vì vậy nó trở thành 110. Xuống đến 10 gần nhất không trừ -10 cho 100, vì vậy 100 vẫn là 100.
TitanFighter

6

Tôi cần một cái gì đó tương tự, vì vậy tôi đã viết một hàm. Tôi đã sử dụng hàm để làm tròn số thập phân ở đây và vì tôi cũng sử dụng nó để làm tròn số nguyên, nên tôi cũng sẽ đặt nó làm câu trả lời ở đây. Trong trường hợp này, chỉ cần chuyển số bạn muốn làm tròn và sau đó là 10, số bạn muốn làm tròn.

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}

Tôi thích rằng bạn đã biến nó thành một hàm, nhưng điều này có đưa ra kết quả khác với câu trả lời được chấp nhận không, và nếu không, tại sao bạn lại sử dụng một công thức khác?
RozzA

Nó trả về cùng một giá trị, nhưng công thức khác nhau vì nó dễ sử dụng hơn. Ví dụ, nếu bạn muốn làm tròn đến gần nhất .25, bạn có thể chỉ cần sử dụng .25làm đối số thứ hai. Nếu bạn sử dụng các công thức trong các câu trả lời khác, bạn phải sử dụng 4làm đối số thứ hai khi bạn muốn làm tròn .25, điều này là phản trực quan.
cjbarth

bạn có thể chứng minh điều đó? tôi vừa thực hiện một số thử nghiệm trong giao diện điều khiển & trở về câu trả lời được chấp nhận câu trả lời đúng bằng .25như là đối số thứ 2 - Tôi đã làm cho nó thành một chức năng lótfunction roundTo(x,y){return Math.round(x / y) * y}
RozzA

@RozzA, bạn nói đúng. Tôi đang nghĩ về câu trả lời trong một câu hỏi tương tự khác. Tôi sẽ đơn giản hóa chức năng của mình.
cjbarth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.