2012-06-20 3 views
20

私は入力値を受け取り、それを科学的表記法(N x 10^a)に変換する関数を作りたいと思います。数値を表記法に変換するにはどうすればよいですか?

私は多くのことを試しましたが、それは正しいとは言えません。

例:

私は200を入力コンバータは^ 2 2×10に変換

+2

あなたが試したことを私たちに教えてください。 –

+0

より具体的な情報もお薦めします。すなわち、有効数字はどれくらいの最大数ですか? 2,121,212 - > 2 x 10^6または2.1 x 10^6など?私が推測する "カットオフ"とは何ですか – Sephallia

答えて

50

あなたはこのような何か行うことができます。

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

フィドル: http://jsfiddle.net/Q8avJ/9/

+1

うわー、これは存在しているのを知らなかった:) –

+0

うわー、これはどちらかというと分かっていませんでした:) – Amadan

+1

恐ろしい!しかし、それをN×10^aの形で作る方法はありますか?私はまだこのことをすることができます! – Samar

1

を次のような基本10形式が必要な場合:

メートル×10 N

そしてこのような関数を使用することができます:

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>'; 
} 

テストを行う:http://jsfiddle.net/u1hd4zm9/

だけ奇妙なことは、toFixed法(IN点であります最低でもChromeは正確な半分を丸めるわけではありません。あなたはこのコードを実行した場合例えば:

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

をあなたが期待するようにそれは2.6 '「2.5」を印刷しません。しかし、あなたがこのコードを実行する場合:

それは3を印刷します。