Tôi không có ý tưởng làm thế nào để làm điều này? Tôi đang thêm số dấu phẩy, kết quả tất nhiên luôn là một số có quá nhiều chữ số sau dấu phẩy. bất kỳ ai?
Tôi không có ý tưởng làm thế nào để làm điều này? Tôi đang thêm số dấu phẩy, kết quả tất nhiên luôn là một số có quá nhiều chữ số sau dấu phẩy. bất kỳ ai?
Câu trả lời:
CHỈNH SỬA 2 :
Sử dụng phương thức Number
của đối tượng toFixed
như sau:
var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)
Nó làm tròn 42,0054321 thành 42,01
Nó làm tròn 0,005 đến 0,01
Nó làm tròn -0.005 thành -0.01 (Vì vậy, giá trị tuyệt đối tăng khi làm tròn ở viền .5)
CẬP NHẬT: Hãy nhớ rằng tại thời điểm câu trả lời được viết lần đầu tiên vào năm 2010, hàm dưới đây toFixed () hoạt động hơi khác một chút. toFixed () bây giờ dường như thực hiện một số làm tròn, nhưng không phải theo cách toán học nghiêm ngặt. Vì vậy, hãy cẩn thận với nó. Làm các bài kiểm tra của bạn ... Phương pháp được mô tả dưới đây sẽ làm tròn số tốt, như nhà toán học mong đợi.
toFixed()
- phương thức chuyển đổi một số thành một chuỗi, giữ một số thập phân xác định. Nó không thực sự làm tròn số, nó cắt bớt số.Math.round(n)
- làm tròn một số đến số nguyên gần nhất. Do đó biến:0,5 -> 1; 0,05 -> 0
vì vậy nếu bạn muốn làm tròn, hãy nói số 0,55555, chỉ đến chữ số thập phân thứ hai; bạn có thể làm như sau (đây là khái niệm từng bước):
0.55555 * 100
= 55.555 Math.Round(55.555)
-> 56.00056.000 / 100
= 0,56000 (0.56000).toFixed(2)
-> 0,56và đây là mã:
(Math.round(number * 100)/100).toFixed(2);
Điều này đã làm việc cho tôi:
var new_number = float.toFixed(2);
Thí dụ:
var my_float = 0.6666
my_float.toFixed(3) # => 0.667
0.6666.toFixed(3)
trở thành 0.666
thay vì 0.667
. @Andrei dường như có giải pháp phù hợp để làm tròn đúng cách.
toFixed()
hoạt động hoàn hảo: 0.6666.toFixed(3) # => 0.667
. Tôi sẽ thêm nó vào câu trả lời của bạn.
Các câu trả lời trước đó đã quên nhập lại đầu ra dưới dạng Số. Có một số cách để làm điều này, tùy thuộc vào sở thích của bạn.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Mặc dù chúng tôi có nhiều câu trả lời ở đây với nhiều gợi ý hữu ích, mỗi người trong số họ vẫn bỏ sót một số bước.
Vì vậy, đây là một giải pháp hoàn chỉnh được gói thành chức năng nhỏ:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
Chỉ trong trường hợp bạn quan tâm đến cách hoạt động của nó:
toFixed(2)
để giữ lại 2 chữ số sau dấu phẩy và bỏ phần không dùng đến khácparseFloat()
hàm dưới dạng
toFixed(2)
chuỗi trả về thay thếLưu ý: Nếu bạn giữ 2 chữ số cuối cùng sau dấu phẩy vì làm việc với các giá trị tiền tệ và thực hiện các tính toán tài chính, hãy nhớ rằng đó không phải là ý kiến hay và tốt hơn bạn nên sử dụng các giá trị số nguyên để thay thế.
sử dụng mã dưới đây.
alert(+(Math.round(number + "e+2") + "e-2"));
Tôi sử dụng cái này:
function round(value, precision) {
if(precision == 0)
return Math.round(value);
exp = 1;
for(i=0;i<precision;i++)
exp *= 10;
return Math.round(value*exp)/exp;
}