我正在寻找一种方法来复制number_format()(存在于php中)。
例如
1234 => 1,234
10000 => 10,000
1000000 => 100,000
我正在使用的语言不支持列表/数组/正则表达式,所以我愿意接受任何建议。我以前的代码似乎只适用于10000000(10,000,000)这样的数字,但是当我使用1000这样的数字时,它很遗憾地给了10,00。
php中的一个例子可以正常工作,所以我可以翻译它。
由于
答案 0 :(得分:2)
另一种方法:
function number_format($num){
$len=strlen( (string)$num );
$newnum='';
for ($i=$len; $i>=0; --$i) {
$newnum=$num{$i}.$newnum;
if (!$i%3 && $i) {
$newnum=','.$newnum;
}
}
return (int)$newnum;
}
答案 1 :(得分:2)
这是Kae Verens功能的工作版本。
function number_format($num){
$num=(string)$num;
$len=strlen($num);
$newnum='';
for ($i=0; $i<$len; ++$i) {
if (($i%3==0) && $i) {
$newnum=','.$newnum;
}
$newnum=$num[$len-$i-1].$newnum;
}
return $newnum;
}
答案 2 :(得分:0)
这样的事情可能有效(未经测试):
function number_format($num){
$num=(string)$num;
while (preg_match('/[^,][0-9]{3}[,$]/', $num) {
$num=preg_replace('/([^,])([0-9]{3})[,$]/', '\1,\2', $num);
}
$num=preg_replace('/^([0-9]),/', '\1', $num);
return $num;
}
答案 3 :(得分:-1)
$number = 10000000;
echo number_format($number, 0, '', ',');