数字にカンマを入れるプログラム

| コメント(0) | トラックバック(0)

よく数字にカンマを入れて画面表示するケースがあるかと思いますが、処理がちょっとめんどくさいんですよね。
そこで、関数を作っておくと簡単に対応できるようになると思います。

たとえば私は、PHPで以下のような関数を作って使用しています。


function insertComma($num, $count=3, $sep=',', $point='.'){
$ret = '';
$num = strval($num);
@list($integer, $decimal) = explode($point, $num);

for($i = 1; $i <= strlen($integer); $i++){
$ret = substr($integer, -$i, 1).$ret;
if($i % $count == 0) $ret = $sep.$ret;
}
$ret = trim($ret, ',');
if($decimal != NULL) $ret = $ret.$point.$decimal;

return $ret;
}


基本的には、数値を文字列化して指定文字数(通常は3文字)ごとにカンマ(文字は指定可能)を挿入していきます。
カンマが先頭や末尾に入ってしまったらそれを削除したり、小数点があったらその部分を別処理したりもしています。

これは、同じようなロジックで他の言語にも移植可能だと思います。
たとえば、Perlだとこんな感じでしょうか?


sub insertComma{
my ($num, $count, $sep, $point) = @_;
$count = 3 if(!$count || $count =~ /[^1-9]/);
$sep = ',' if(!$sep);
$point = '.' if(!$point);
my ($integer, $decimal) = split(/[$point]/, $num);

my $ret = '';
$integer = "$integer";
for($i = 1; $i <= length($integer); $i++){
$ret = substr($integer, -$i, 1).$ret;
$ret = $sep.$ret if($i % $count == 0);
}
$ret =~ s/,$//;
$ret =~ s/^,//;
$ret = $ret.$point.$decimal if($decimal != NULL) ;

return $ret;
}

よかったらご利用くださいませ。

トラックバック(0)

トラックバックURL: http://blog.harmonicom.jp/mt/mt-tb.cgi/106

コメントする

プロフィール

ヤマカズー(ヤマカズ)

Webコンサルティング会社に勤めるシステムコンサルタントのおっちゃんです。
趣味はコンピューター。まんまですね。
あと申し訳程度に空手とか。
子供が二人います。

kazooooo at gmail.com

mixiはこちら

HARMONICOM

twitter

スゲーなんだこれ!?w > スマホをPCのセカンドディスプレーにできるAndroidアプリがイカス! #asciiplus http://t.co/4hbbnZeb
2012-02-02 20:08:03
いやあぁぁぁぁ~~!! ん?「D」と「.」?……「し」「る」? RT @hizous : @yamakazoo サーバの後ろに悲しそうな顔をした日本髪の若い女性が見えます・・・何か心当たりはないですか・・・? ん?キーボードの「D」と「、」のところを指さしているようです・・・
2012-02-02 11:39:49
家のMacBookといい会社のサーバーといい、原因不明なところでCPUがフルパワーになったり、ディスクへのアクセスが異様に遅くなったりする……これってある意味、寿命ってことなのかな……
2012-02-02 11:16:13
おお! RT @YahooNewsJP : [社会]<雑記帳>劇団四季「キャッツ」出演者が電子確定申告 - 毎日新聞 http://t.co/5tDvGJI6
2012-02-01 22:50:43
うちの会社にも備蓄いっぱい!! 深夜メンテの時にこっそり食べ(ry RT @YahooNewsJP : [社会]「ビスコ」売り上げ過去最高に…備蓄用缶人気で - 読売新聞 http://t.co/ZKIpZ1RJ
2012-02-01 19:12:41
follow me on Twitter