Tuesday, February 2, 2010

numbers to words (indian rupess)

start php tag

class NumberToWord
{

/**
* @param int number
* @return string input inmber in words
*/
public function numberToWord($number)
{
if (($number < 0) || ($number > 999999999))
{
throw new Exception("Number is out of range");
}
/*
* crore
*/
$croreNumber = floor($number / 10000000);
$number -= $croreNumber * 10000000;
/**
* lakhs
*/
$lakhNumber = floor($number / 100000);
$number -= $lakhNumber * 100000;
/**
* Thousands (kilo)
*/
$kiloNumber = floor($number / 1000);
$number -= $kiloNumber * 1000;
/**
* Hundreds (hecto)
*/
$hectoNumber = floor($number / 100);
$number -= $hectoNumber * 100;
/**
* Tens (deca)
*/
$decaNumber = floor($number / 10);
/**
* Ones (single digit/ Number)
*/
$onesNumber = $number % 10;
$result = "";

if ($croreNumber)
{
$result .= (empty($result) ? "" : " ") .
$this->numberToWord($croreNumber) . " Crore ";
}

if ($lakhNumber)
{
$result .= (empty($result) ? "" : " ") .
$this->numberToWord($lakhNumber) . " Lakh ";
}

if ($kiloNumber)
{
$result .= (empty($result) ? "" : " ") .
$this->numberToWord($kiloNumber) . " Thousand ";
}

if ($hectoNumber)
{
$result .= (empty($result) ? "" : " ") .
$this->numberToWord($hectoNumber) . " Hundred ";
}

$ones = array("", "One", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
"Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen",
"Eightteen","Nineteen");

$tens = array("", "", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty",
"Seventy", "Eigthy", "Ninety");

if ($decaNumber || $onesNumber)
{
if (!empty($result))
{
$result .= " ";
}

if ($decaNumber < 2)
{
$result .= $ones[$decaNumber * 10 + $onesNumber];
}
else
{
$result .= $tens[$decaNumber];
if ($onesNumber)
{ $result .= " " . $ones[$onesNumber]; }
}
}

if (empty($result))
{
$result = "zero";
}

return $result;
}
}

$number = 100000000;
$helperWords = new NumberToWord;
$wordString = $helperWords->numberToWord($number);
echo "Number Converted to words:$wordString";
?>

No comments:

Post a Comment