2014-09-22 75 views
2

词用PHP如何数字转换为印度货币字格式派萨(十进制值)转换数以印度货币格式派萨价值

输入
190908100.25

输出我们需要

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

我需要这个转换ersion方法在php

+2

写自己的功能? – 2014-09-22 06:02:23

+0

计算每个字符定义它的值? – 2014-09-22 06:03:48

+0

此链接可能是有用的...谢谢你的问题和答案:http://stackoverflow.com/questions/19308102/how-to-convert-decimal-number-to-words-money-format-using-php – 2014-09-22 06:05:35

回答

38

转换货币数量为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 = round($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亿卢比9个十万8100卢比。两个五派士


    现在我已经加入简化方法如下:

    function getIndianCurrency(float $number) { $decimal = round($number - ($no = floor($number)), 2) * 100; $hundred = null; $digits_length = 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_length) { $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; } $Rupees = implode('', array_reverse($str)); $paise = ($decimal) ? "." . ($words[$decimal/10] . " " . $words[$decimal % 10]) . ' Paise' : ''; return ($Rupees ? $Rupees . 'Rupees ' : '') . $paise .; }

method calling :

echo getIndianCurrency(79855995.19);

输出 7亿卢比98万卢比55数以千计995个卢比。一是9派萨

+0

感谢您的问题和答案: )它帮了我 – Nikz 2015-05-22 06:20:57

+1

嗯...好吧... – 2015-05-23 07:00:03

+0

完美地为我工作。 – 2015-10-06 09:46:58