13

PHP を使用して、数値を paise (10 進数値) でインドの通貨の単語形式に変換する方法

入力
190908100.25

必要な出力

nineteen crores nine lakh eight thousand one hundred Rupees .two five Paise

この変換方法は core で期待していますphp

4

1 に答える 1

85

を使用して通貨番号を Word 形式に変換するPHP

 <?php
  /**
   * Created by PhpStorm.
   * User: sakthikarthi
   * Date: 9/22/14
   * Time: 11:26 AM
   * Converting Currency Numbers to words currency format
   */
$number = 190908100.25;
   $no = floor($number);
   $point = round($number - $no, 2) * 100;
   $hundred = null;
   $digits_1 = strlen($no);
   $i = 0;
   $str = array();
   $words = array('0' => '', '1' => 'one', '2' => 'two',
    '3' => 'three', '4' => 'four', '5' => 'five', '6' => 'six',
    '7' => 'seven', '8' => 'eight', '9' => 'nine',
    '10' => 'ten', '11' => 'eleven', '12' => 'twelve',
    '13' => 'thirteen', '14' => 'fourteen',
    '15' => 'fifteen', '16' => 'sixteen', '17' => 'seventeen',
    '18' => 'eighteen', '19' =>'nineteen', '20' => 'twenty',
    '30' => 'thirty', '40' => 'forty', '50' => 'fifty',
    '60' => 'sixty', '70' => 'seventy',
    '80' => 'eighty', '90' => 'ninety');
   $digits = array('', 'hundred', 'thousand', 'lakh', 'crore');
   while ($i < $digits_1) {
     $divider = ($i == 2) ? 10 : 100;
     $number = floor($no % $divider);
     $no = floor($no / $divider);
     $i += ($divider == 10) ? 1 : 2;
     if ($number) {
        $plural = (($counter = count($str)) && $number > 9) ? 's' : null;
        $hundred = ($counter == 1 && $str[0]) ? ' and ' : null;
        $str [] = ($number < 21) ? $words[$number] .
            " " . $digits[$counter] . $plural . " " . $hundred
            :
            $words[floor($number / 10) * 10]
            . " " . $words[$number % 10] . " "
            . $digits[$counter] . $plural . " " . $hundred;
     } else $str[] = null;
  }
  $str = array_reverse($str);
  $result = implode('', $str);
  $points = ($point) ?
    "." . $words[$point / 10] . " " . 
          $words[$point = $point % 10] : '';
  echo $result . "Rupees  " . $points . " Paise";
 ?> 
  • 出力

    19億900万ルピー8千100ルピー。2 5 パイセ


    今、私は次のように簡略化された方法を追加しました:

    関数 getIndianCurrency(float $number) { $decimal = round($number - ($no = floor($number)), 2) * 100; $百 = null; $digits_length = strlen($no); $i = 0; $str = 配列(); $words = array(0 => '', 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5', 6 => '6', 7 => '7', 8 => '8', 9 => '9', 10 => '10', 11 => '11', 12 => '12', 13 => '13', 14 => '14', 15 => '15', 16 => '16', 17 => '17', 18 => '18', 19 => '19', 20 => '20', 30 => '30', 40 => '40', 50 => '50', 60 => '60', 70 => '70', 80 => '80', 90 => '90'); $digits = array('', '100','千','lakh', 'crore'); while( $i < $digits_length ) { $divider = ($i == 2) ? 10:100; $number = floor($no % $divider); $no = floor($no / $divider); $i += $divider == 10 ? 1 : 2; もし ($番号) { $plural = (($counter = count($str)) && $number > 9) ? 's': ヌル; $百 = ($カウンター == 1 && $str[0]) ? ' および ': null; $str [] = ($番号 < 21) ? $words[$number].' '。$数字[$カウンター]。$plural.' '.$百:$単語[床 ($番号 / 10) * 10].' '.$words[$number % 10]. ' '.$digits[$counter].$plural.' '.$100; そうでなければ $str[] = null; } $Rupees = implode('', array_reverse($str)); $paise = ($decimal > 0) ? 「。」. ($words[$decimal / 10] . " " . $words[$decimal % 10]) . 'パイズ': ''; return ($Rupees ? $Rupees . 'Rupees ': '') . $パイセ; }

メソッド呼び出し:

echo getIndianCurrency(79855995.19);

生産量 は 7 億 9800 万ルピー 5 万 5009 995 ルピー .1 9 パイセ

于 2014-09-22T06:15:41.047 に答える