2010-08-31 28 views

Trả lời

7

Bạn cần nhân với một trăm (để các xu là những gì sẽ được làm tròn), tròn, sau đó chia cho một trăm để có được giá hợp lý bằng đô la một lần nữa.

var dollars = 0.075; // 0.075 dollars 
var cents = dollars * 100; // ... is 7.5 cents 
var roundedCents = Math.round(cents); // ... but should really be 8 cents 
var roundedPrice = roundedCents/100; // ... so it's 0.08 dollars in the end 
2

Sử dụng Math.Round. Lấy từ this bài viết

var original=28.4531) 

// round "original" to two decimals 
var result = Math.round(original*100)/100; 
// returns 28.452) 

// round "original" to 1 decimal 
var result = Math.round(original*10)/10; 
// returns 28.53) 

// round 8.111111 to 3 decimals 
var result = Math.round(8.111111*1000)/1000; 
// returns 8.111 
4

Javascript có ba chức năng làm tròn, tất cả đều là thành viên của đối tượng Math: round (vòng lên hoặc xuống, số nguyên gần nhất), floor (làm tròn xuống) và ceil (vòng lên). Thật không may, cả ba chỉ tròn với số nguyên gần nhất. Tuy nhiên, bạn có thể nhân số tiền đô la của bạn trước tiên (để nhận được đồng xu) và sau đó sử dụng ceil để làm tròn lên xu tiếp theo;

var money = 0.075; 
var pennies = money * 100; 
money = Math.ceil(pennies)/100; 
+0

nên được 'Math.round' nhưng ý tưởng là như nhau. Cảm ơn! – mpen

+0

@Mark Câu hỏi của bạn được yêu cầu làm tròn ...;) –

+0

Tôi nghĩ rằng tôi đã hỏi làm thế nào để làm tròn * nửa xu * lên, mà tôi cho là hơi mơ hồ dưới một nửa;) – mpen

1
alert(0.755.toFixed(2)); 
+0

'0.075.toFixed (2)' là '0.07', không phải' 0.08' theo yêu cầu. –

+0

Được rồi đó là điều sai lầm. Tôi gõ sai mã thử nghiệm của tôi với thêm 5 với FF 3.5.11 javascript: alert ((0.075.toFixed (2)) + "\ n" + (0.0755.toFixed (2))); Gãi đầu vào cái này. lol – epascarello

+0

Rất lạ http://jsbin.com/uyiho3 Cần phải xem những gì spec nói. :) – epascarello

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