Skip to content

Instantly share code, notes, and snippets.

@prayas-sapkota
Created September 7, 2016 06:17
Show Gist options
  • Save prayas-sapkota/687efd6cfc816ba8d10a6bfcbd2b8cb0 to your computer and use it in GitHub Desktop.
Save prayas-sapkota/687efd6cfc816ba8d10a6bfcbd2b8cb0 to your computer and use it in GitHub Desktop.
Convert numeric value to word in Nepali currency format.
// $f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
// echo $f->format(1432123.45);
$number = 1257.37;
$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 . " Paisa Only.";
@paschim
Copy link

paschim commented Apr 6, 2021

great

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment