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

时间:2017-05-17 08:13:36

标签: php decimal money-format

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

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 

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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;
    }

有人可以查看此代码吗?