2017-11-28 6 views
0

私はオブジェクトと精度の数値を引数として取る小数精度関数を持っていて、出力としてJSON.parse(number)を使って解析された数値を返します。 toPrecision()関数は、渡された値が小数点以下の桁数で精度値が1〜100のときに指数表記の値を返すことを確認しました。JSON.parse()に指数表記を渡すと、数。私はこれが内部的にどのように働いているのか理解していません。誰でも私にここで何が起こっているのかを説明できますか?以下は、私が考案した機能である:指数値のJSON構文解析がなぜJavaScriptで数値を与えるのか?

function precise(object, precision){ 
    let st = JSON.stringify(object); 
    st = st.replace(/[+-]?([0-9]*[.])?[0-9]+/g, s => parseFloat(s).toPrecision(precision)); 
    return JSON.parse(st); 
} 

たとえば、私は正確な呼び出した場合(100、2)、STは値+ 2 1.0Eを持つことになり、戻り値はこれをどのように100になります変換が行われますか?

ありがとうございます。私はあなたの質問を理解していた場合、正しくそれが本質的である

+1

あなたはjsでこれを行うことができないのですか? 'var n = 1.0e + 10;'? –

+0

置換操作後に 'st'が' 1.0e + 2 'になった場合は、単にJSON.parse(' 1.0e + 2 ') 'に減らすことができます。 '1.0e + 2'をJSコンソールに入力すると、結果は' 100'になります。 –

+1

すべてのコードのポイントは何ですか?達成しようとしていることは何ですか?実際、JavaScriptには1種類の数字しかないので、それを変更することはあまりありません。 – Pointy

答えて

1

...

は「なぜ 1.0e+2console.log((100).toPrecision(2));結果のでしょうか?」

toPrecisionに与えられた引数は、望ましい精度(「科学的精度」または桁数(小数点ではない))を定義します。

つまり、100に2桁以上の数字があるため、科学的表記法を使用して結果を定義する必要があります。