【问题标题】:PHP | Custom Indian Money format function doesn't consider decimalsPHP |自定义印度货币格式函数不考虑小数
【发布时间】:2017-05-17 08:13:35
【问题描述】:

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

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 

我该如何解决这个问题?

【问题讨论】:

    标签: php decimal money-format


    【解决方案1】:

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

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

    有人可以查看此代码吗?

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2023-03-28
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多