数値のフォーマット

ajaxをコリコリやると、サーバー側でjavaをシコシコで、やはりクライアント側はjavaScriptでポチポチ・・・と。

で、javaScriptは変数のスコープとかで解釈が「あらっ」ってのもありますが、今回は数値を表示する際の書式の指定ですね。勘定系のシステムでは、整数を扱うことが多く、正規表現を使った方法ってのを参考に、チョチョイとやっておりました。

今回は小数点以下も持った数値を扱うので、これもチョチョイと思ったらサにあらず。今まで通りの3桁ごとカンマと同時に、小数の桁を指定するのが、「こんなこと」がエレガントにできないみたいでした。

で、以下のような関数を呼び出すことで自作しました。


//
// 数値のフォーマット
//
function numFormat(num, period) {
	var i = String(num).lastIndexOf(".");
	var strInt;
	var strPer;
	if(i<0) {	//小数点なし
		strInt = String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,' );
		strPer = parseFloat("0").toFixed(period);
	} else {	//小数点あり
		strInt = String(num).substring(0, i).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,' );
		strPer = parseFloat(String(num).slice(i)).toFixed(period);
	}
	return	strInt + strPer.slice(1);
}

@param num 整形したい数値データ
@param period 表示したい小数以下の桁数
これで、numFormat(‘1234.1234’, 2) で、1,234.12 が返ります。

ヨシヨシ。

Categories: Mighty構想 Tags:
  1. No comments yet.