0

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

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 

我怎样才能解决这个问题?

4

1 回答 1

0

我不知道这是否是正确的方法,但它似乎现在正在工作。我正在做的是

  • 从数字中提取小数部分作为字符串
  • 删除小数点前的所有零(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;
    }

任何人都可以查看此代码吗?

于 2017-05-17T08:58:17.480 回答