PHP |自定义印度货币格式函数不考虑小数

PHP | Custom Indian Money format function doesn't consider decimals

我有这个函数可以将数字转换为印度货币格式。

function IND_money_format($money)
{
$len = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$len;$i++){
    if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
        $m .=',';
    }
    $m .=$money[$i];
}
return strrev($m);
}

如果我将整数而不是小数作为输入,则输出很好。 例如:

3 => 3
30 => 30
300 => 300
3000  => 3,000
459600 =>  4,59,600

但是如果我给出十进制数,输出就会损坏 例如:

379.50 => 37,9.5 

我该如何解决这个问题?

我不知道这是否是正确的方法,但它目前似乎有效。 我正在做的是

  • 从数字中提取小数部分作为字符串
  • 删除小数点前的所有零(0.5 变为 .5
  • 只需将十进制字符串连接到最终答案即可。

所以函数变成了这样:

public function IND_money_format($money){
        $decimal = (string)($money - floor($money));

        $money = floor($money);
        $len = strlen($money);
        $m = '';
        $money = strrev($money);
        for($i=0;$i<$len;$i++){
            if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
                $m .=',';
            }
            $m .=$money[$i];
        }

        $a = strrev($m);
        // $a = $decimal;
        $decimal = preg_replace("/0\./i", ".", $decimal);

        if( $decimal != '0'){
        $a = $a.$decimal;
        }

        return $a;
    }

有人可以查看此代码吗?