イントロダクション
記事「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) の指数部:20.1234(1.234e-1) の指数部:-1
-0.01234(-1.234e-2) の指数部:-2
正しく数値の指数部を取得できていることがわかります。
なお、いかに上記メソッドを使用して、試しに計算できるテキストボックスを設置したので、使ってみてください。
参考文献
1
文字列が数値に変換できるか調べる: .NET Tips: C#, VB.NEThttp://dobon.net/vb/dotnet/vb2cs/isnumeric.html#section4
コメントを投稿
コメント投稿機能について