2017-05-17 1 views
0

숫자를 Indian money 형식으로 변환하는이 함수가 있습니다.PHP | 사용자 지정 Indian Money 형식 함수가 소수를 고려하지 않습니다

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

이것이 올바른 방법인지는 모르겠지만 지금은 제대로 작동하고있는 것 같습니다. 내가 무엇을하고 있어요

  • 추출물
  • 은 소수점 전에 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; 
        } 
    

    사람이 코드를 검토하십시오 수 :

그래서 기능은 다음과 같이된다?