29

入力した値を取り、それを科学的記数法に変換する関数を作成したい(N x 10 ^ a)

いろいろ試してみましたが、うまくいかないようです。

例:

200と入力します。コンバーターはそれを2x10^2に変換します

4

3 に答える 3

67

あなたはこのようなことをすることができます:

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

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

于 2012-06-20T17:01:29.737 に答える
8

ある時点で、係数と指数を数値として使用したいと思いました。

これを実行したい場合は、toExponential関数を使用して文字列を分割し、配列の項目を数値に変換できます。

次のスニペットでは、オブジェクトに番号を割り当て、numInSciNot必要な形式で印刷します。

const num = 200;
const numInSciNot = {};
[numInSciNot.coefficient, numInSciNot.exponent] =
  num.toExponential().split('e').map(item => Number(item));
 
console.log(`${numInSciNot.coefficient} x 10^${numInSciNot.exponent}`);

それらを数字として使用したくない場合は、次を使用できますreplace

const num = 200;
 
console.log(num.toExponential().replace(/e\+?/, ' x 10^'));

このスニペットでは、正規表現を使用してeorを置き換えましe+た(正の指数の場合)。

小数点以下の桁数を指定したい場合toExponential(NumberOfDigits)は、上記の例で使用できます。

于 2018-11-06T09:39:24.267 に答える
1

このような10進数の形式が必要な場合:

m x 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メソッド(少なくともChromeでは)が正確に半分を切り上げるのではなく、切り下げることです。たとえば、このコードを実行する場合:

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

期待どおりに「2.6」ではなく「2.5」が出力されます。ただし、このコードを実行する場合:

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

3と表示されますのでご注意ください。

于 2017-10-23T19:04:37.283 に答える