2012-06-20 41 views
20

Tôi muốn tạo hàm có giá trị đã nhập và chuyển đổi thành ký hiệu khoa học (N x 10^a)Làm cách nào để chuyển đổi số thành ký hiệu khoa học?

Tôi đã thử nhiều thứ khác nhau, nhưng dường như không đúng.

Ví dụ:

tôi nhập 200. Chuyển đổi chuyển đổi nó để 2 x 10^2

+2

Hiển thị cho chúng tôi những gì bạn đã thử. –

+0

Cũng muốn biết thêm thông tin cụ thể. có bao nhiêu chữ số có nghĩa là số tối đa? 2,121,212 -> 2 x 10^6 hoặc 2,1 x 10^6 v.v ...? Những gì là "cắt" Tôi đoán – Sephallia

Trả lời

50

Bạn có thể làm một cái gì đó như thế này:

a = 200 
a.toExponential(); //output 2e+2 

fiddle: http://jsfiddle.net/Q8avJ/9/

+1

Wow, tôi không biết điều này tồn tại :) –

+0

Wow, tôi không biết điều này tồn tại hoặc là :) – Amadan

+1

Tuyệt vời! Nhưng có cách nào để biến nó thành dạng N x 10^a không? Tôi vẫn có thể làm với điều này, mặc dù! – Samar

1

Nếu bạn muốn định dạng cơ sở 10 như sau:

m x 10 n

Sau đó, bạn có thể sử dụng một chức năng như thế này:

function writeScientificNum(p_num, p_precision) { 
    var n = Math.round(Math.log10(a)); 
    var m = (p_num * (Math.pow(10,Math.abs(n)))).toFixed(p_precision); 
    document.getElementById("outputTxt").innerHTML = m.toString() + ' x 10<sup>' + n.toString() + '</sup>'; 
} 

Kiểm tra nó ra: http://jsfiddle.net/u1hd4zm9/

điều Chỉ lẻ là phương pháp toFixed (trong Chrome ít nhất) sẽ không làm tròn chính xác một nửa, nhưng giảm xuống. Ví dụ: nếu bạn chạy mã này:

var test = 2.55; 
alert(test.toFixed(1)); 

Nó sẽ in '2,5' và không '2,6' như bạn mong đợi. Tuy nhiên, nếu bạn chạy mã này:

var test = 2.5; 
alert(test.toFixed(0)); 

Nó sẽ in 3. Vì vậy, hãy lưu ý điều đó.

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