よく数字にカンマを入れて画面表示するケースがあるかと思いますが、処理がちょっとめんどくさいんですよね。
そこで、関数を作っておくと簡単に対応できるようになると思います。
たとえば私は、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;
}
よかったらご利用くださいませ。
コメントする