2013-10-15 24 views
14

Tôi đang tìm kiếm một sản phẩm củasố vòng gần nhất .5 thập phân

4,658227848101266 = 4,5

4,052117263843648 = 4,0

gần nhất tôi đã nhận được là

rating = (Math.round(rating * 4)/4).toFixed(1) 

nhưng với số này 4.658227848101266 = 4.8 ???

Trả lời

25

(Math.round (Đánh giá * 2)/2) .toFixed (1)

-2

Tôi giả sử bạn muốn định dạng số cho đầu ra và không cắt chính xác. Trong trường hợp đó, sử dụng một DecimalFormat. Ví dụ:

DecimalFormat df = new DecimalFormat("#.#"); 
df.format(rating); 
+0

Câu trả lời trước của tôi không hoạt động trong JavaScript tất nhiên. Xin lỗi nếu tôi gây ra bất kỳ sự nhầm lẫn nào. (Nó hoạt động trong Java, mặc dù.) – Thomas

19

Đó là khá đơn giản, bạn nên nhân con số đó 2, sau đó vòng nó và sau đó chia nó bằng 2:

var roundHalf = function(n) { 
    return (Math.round(n*2)/2).toFixed(1); 
}; 
10

này làm việc cho tôi! (Sử dụng định dạng gần nhất có thể để bạn)

rating = (Math.round(rating * 2)/2).toFixed(1) 
3

Vì vậy, câu trả lời này đã giúp tôi. Đây là một chút ma thuật được thêm vào nó để xử lý làm tròn đến 0,5 hoặc số nguyên. Lưu ý rằng * 2 và/2 được chuyển sang /.5 và * .5 so với mọi câu trả lời khác.

/* 
* @param {Number} n - pass in any number 
* @param {Number} scale - either pass in .5 or 1 
*/ 
var superCoolRound = function(n,scale) { 
    return (Math.round(n/scale) * scale).toFixed(1); 
}; 
+0

gọn gàng .. là peformant hơn? – iamwhitebox

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