How to display Currency in Indian Numbering Format in PHP

后端 未结 22 1808
一整个雨季
一整个雨季 2020-12-01 06:14

I have a question about formatting the Rupee currency (Indian Rupee - INR).

For example, numbers here are represented as:

1
10
100
1,000
10,000
1,00,00         


        
相关标签:
22条回答
  • 2020-12-01 06:54

    The example you've linked is making use of the ICU libraries which are available with PHP in the intl Extension­Docs:

    $fmt = new NumberFormatter($locale = 'en_IN', NumberFormatter::CURRENCY);
    echo $fmt->format(10000000000.1234)."\n"; # Rs 10,00,00,00,000.12
    

    Or maybe better fitting in your case:

    $fmt = new NumberFormatter($locale = 'en_IN', NumberFormatter::DECIMAL);
    echo $fmt->format(10000000000)."\n"; # 10,00,00,00,000
    
    0 讨论(0)
  • 2020-12-01 06:54
    <?php
    $amount = '-100000.22222';    // output -1,00,000.22 
    //$amount = '0100000.22222';  // output 1,00,000.22 
    //$amount = '100000.22222';   // output 1,00,000.22 
    //$amount = '100000.';       // output 1,00,000.00 
    //$amount = '100000.2';     // output 1,00,000.20
    //$amount = '100000.0';    // output 1,00,000.00 
    //$amount = '100000';      // output 1,00,000.00 
    
    echo $aaa = moneyFormatIndia($amount);
    
    function moneyFormatIndia($amount)
        {
    
            $amount = round($amount,2);
    
            $amountArray =  explode('.', $amount);
            if(count($amountArray)==1)
            {
                $int = $amountArray[0];
                $des=00;
            }
            else {
                $int = $amountArray[0];
                $des=$amountArray[1];
            }
            if(strlen($des)==1)
            {
                $des=$des."0";
            }
            if($int>=0)
            {
                $int = numFormatIndia( $int );
                $themoney = $int.".".$des;
            }
    
            else
            {
                $int=abs($int);
                $int = numFormatIndia( $int );
                $themoney= "-".$int.".".$des;
            }   
            return $themoney;
        }
    
    function numFormatIndia($num)
        {
    
            $explrestunits = "";
            if(strlen($num)>3)
            {
                $lastthree = substr($num, strlen($num)-3, strlen($num));
                $restunits = substr($num, 0, strlen($num)-3); // extracts the last three digits
                $restunits = (strlen($restunits)%2 == 1)?"0".$restunits:$restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping.
                $expunit = str_split($restunits, 2);
                for($i=0; $i<sizeof($expunit); $i++) {
                    // creates each of the 2's group and adds a comma to the end
                    if($i==0) {
                        $explrestunits .= (int)$expunit[$i].","; // if is first value , convert into integer
                    } else {
                        $explrestunits .= $expunit[$i].",";
                    }
                }
                $thecash = $explrestunits.$lastthree;
            } else {
                $thecash = $num;
            }
            return $thecash; // writes the final format where $currency is the currency symbol.
        }
    ?>
    
    0 讨论(0)
  • 2020-12-01 06:54

    heres is simple thing u can do ,

     float amount = 100000;
    
     NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN"));
    
     String moneyString = formatter.format(amount);
    
     System.out.println(moneyString);
    

    The output will be , Rs.100,000.00 .

    0 讨论(0)
  • 2020-12-01 06:59
    <?php
        function moneyFormatIndia($num) 
        {
            //$num=123456789.00;
            $result='';
            $sum=explode('.',$num);
            $after_dec=$sum[1];
            $before_dec=$sum[0];
            $result='.'.$after_dec;
            $num=$before_dec;
            $len=strlen($num);
            if($len<=3) 
            {
                $result=$num.$result;
            }
            else
            {
                if($len<=5)
                {
                    $result='Rs '.substr($num, 0,$len-3).','.substr($num,$len-3).$result;
                    return $result;
                }
                else
                {
                    $ls=strlen($num);
                    $result=substr($num, $ls-5,2).','.substr($num, $ls-3).$result;
                    $num=substr($num, 0,$ls-5);
                    while(strlen($num)!=0)
                    {
                        $result=','.$result;
                        $ls=strlen($num);
                        if($ls<=2)
                        {
                            $result='Rs. '.$num.$result;
                            return $result;
                        }
                        else
                        {
                            $result=substr($num, $ls-2).$result;
                            $num=substr($num, 0,$ls-2);
                        }
                    }
                }
            }
        }
    ?>
    
    0 讨论(0)
  • 2020-12-01 06:59
    declare @Price decimal(26,7)
    Set @Price=1234456677
    select FORMAT(@Price,  'c', 'en-In')
    

    Result:

    1,23,44,56,677.00
    
    0 讨论(0)
  • 2020-12-01 07:02
    $r=explode('.',12345601.20);
    
    $n = $r[0];
    $len = strlen($n); //lenght of the no
    $num = substr($n,$len-3,3); //get the last 3 digits
    $n = $n/1000; //omit the last 3 digits already stored in $num
    while($n > 0) //loop the process - further get digits 2 by 2
    {
        $len = strlen($n);
        $num = substr($n,$len-2,2).",".$num;
        $n = round($n/100);
    }
    echo "Rs.".$num.'.'.$r[1];
    
    0 讨论(0)
提交回复
热议问题