日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2014年5月29日木曜日

JavaScript で数値の指数部を取得するコードを作ってみました

イントロダクション

記事「HTMLとJavaScriptで単純なアニメーション付きの横向き棒グラフを作成する-アニメーションパターン:増加割合固定」にて、アニメーション処理とグラフ上に表示する数値の有効桁数の計算のために、数値の指数部を取得するコードを作ってみました。


数値の指数部とは

数値を指数形式で表示した時の指数部のことです。

指数形式では、数値を次のように表します。

例)元の数値が 123.4 の場合:

1.234e2

となります。1.234 × 10^2 という意味です。(10^2 は 10 の 2 乗という意味で使用しています。)


JavaScript の正規表現で表すと、以下のようになるでしょうか。(参考文献1)

^[+-]?\d\.?\d*[eE][+-]?\d+$


コード

    /*
    数値の指数部を取得する

    */
    function getExponent(value) {
        var value_exponential_str = value.toExponential();                  // 数値を指数形式の文字列へ変換

        var exponent_str = value_exponential_str.replace(/^.*[eE]/, "");    // 実数部からeの部分までを削除
        return Number(exponent_str);
    }


Number.prototype.toExponentialメソッドにて、数値を指数形式の文字列に変換します。

その後、数値と指数部直前の e (1.234e2 でいえば、1.234eの部分)までを正規表現で削除しています。

残った指数部を数値へ変換し返却しています。

結果

以下のコードを実行し、数値の指数部を取得してみました。

テストコード

    var value = "";

    value = 123.4;
    document.writeln(value + "(" + value.toExponential() + ") の指数部:" + getExponent(value) + " <br />");

    value = 0.1234;
    document.writeln(value + "(" + value.toExponential() + ") の指数部:" + getExponent(value) + " <br />");

    value = -0.01234;
    document.writeln(value + "(" + value.toExponential() + ") の指数部:" + getExponent(value) + " <br />");


実行結果

123.4(1.234e+2) の指数部:2
0.1234(1.234e-1) の指数部:-1
-0.01234(-1.234e-2) の指数部:-2


正しく数値の指数部を取得できていることがわかります。


なお、いかに上記メソッドを使用して、試しに計算できるテキストボックスを設置したので、使ってみてください。


指数部を取得したい数値を入力:


参考文献

1

文字列が数値に変換できるか調べる: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/vb2cs/isnumeric.html#section4




関連記事

関連記事を読み込み中...

同じラベルの記事を読み込み中...