2012-03-12 68 views
5

Tôi đang cố gắng làm tròn các giá trị trong mảng của tôi đến 2 dấu thập phân. Tôi hiểu tôi có thể sử dụng math.round nhưng sẽ làm việc cho một mảng toàn bộ? Hoặc tôi sẽ cần phải viết một hàm để làm tròn từng giá trị riêng lẻ.Cách làm tròn tất cả các giá trị trong một mảng thành 2 dấu thập phân

+0

Nếu bạn muốn hai dấu thập phân cho mỗi phần tử trong mảng, bạn có thể gọi phương thức Math.Round cho phần tử eacch hoặc bạn đang tìm kiếm một cái gì đó khác –

Trả lời

4

Loops!

var x = 0; 
var len = my_array.length 
while(x < len){ 
    my_array[x] = my_array[x].toFixed(2); 
    x++ 
} 

Và, có, một vòng lặp while nhanh hơn tại đây.

+0

Chúc mừng cho điều đó. Điều đó đã làm công việc. Tôi đã tự hỏi, tại sao một vòng lặp while nhanh hơn ở đây? Tôi ngồi bên cạnh một thiên tài logic máy tính, những người kiên quyết rằng vòng lặp for sẽ nhanh hơn? –

+0

Tôi đã có một chút hỗn hợp, bạn nên được tốt hơn off với loại bỏ 'x' và làm' trong khi (len -) {my_array [len] = my_array [len] .toFixed (2);} 'Phương pháp trong của tôi câu trả lời chậm hơn 1ms so với cách nhận xét này ... xem: https://blogs.oracle.com/greimer/entry/best_way_to_code_a – tkone

+0

Mặc dù vòng lặp 'while' vẫn nhanh hơn vòng lặp' for'. Nhưng như Knuth đã nói ... "Chúng ta nên quên đi những hiệu quả nhỏ, nói khoảng 97% thời gian: tối ưu hóa sớm là gốc rễ của mọi điều ác" – tkone

2

Bạn phải lặp qua mảng. Sau đó, đối với mỗi phần tử:

So sánh cả hai phương pháp:

Input .toFixed(2) Math.round(Input*100)/100 
1.00  "1.00"  1 
1.0  "1.00"  1 
1  "1.00"  1 
0  "0.00"  0 
0.1  "0.10"  0.1 
0.01  "0.01"  0.01 
0.001 "0.00"  0 
6

Đây là thời điểm tuyệt vời để sử dụng bản đồ.

// first, let's create a sample array 

var sampleArray= [50.2334562, 19.126765, 34.0116677]; 

// now use map on an inline function expression to replace each element 
// we'll convert each element to a string with toFixed() 
// and then back to a number with Number() 

sampleArray = sampleArray.map(function(each_element){ 
    return Number(each_element.toFixed(2)); 
}); 

// and finally, we will print our new array to the console 

console.log(sampleArray); 

// output: 
[50.23, 19.13, 34.01] 

Rất dễ dàng! ;)

+0

Công việc tốt này là những gì tôi đang tìm kiếm. –

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