2017-05-17 12 views
0

インドマネーフォーマットに数値を変換するこの関数を持っています。PHP |カスタムインドマネーフォーマット関数は小数点以下を考慮しません

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 

しかし、私は小数点数を与えた場合、出力が壊れ EX取得します:

379.50 => 37,9.5 

私はこれをどのように修正することができますか?

答えて

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; 
        } 
    

    誰もがこのコードを確認してくださいことはできますか?

  • 関連する問題