Обратите внимание, что следующий PHP-код преобразует количество в количестве, достаточном для слов. Это отлично работает для целого типа (например, 5250), и когда он с десятичной точностью дает неправильные результаты.
Пример: для 450 = только четыреста пятьдесят. Пример: для 450,5 = четыре тысячи пятьсот пять (что неправильно), и это должно быть только четыреста пятьдесят пятьдесят паиса.
Я проверил в веб-анализе, но не смог исправить код. Может ли любой орган предложить / исправить код, пожалуйста?
<?php function inr($number){ //A function to convert numbers into words. $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' => 'fouteen','15' => 'fifteen', '16' => 'sixteen','17' => 'seventeen','18' => 'eighteen','19' => 'nineteen','20' => 'twenty', '30' => 'thirty','40' => 'fourty','50' => 'fifty','60' => 'sixty','70' => 'seventy', '80' => 'eighty','90' => 'ninty'); //First find the length of the number $number_length = strlen($number); //Initialize an empty array $number_array = array(0,0,0,0,0,0,0,0,0); $received_number_array = array(); //Store all received numbers into an array for($i=0;$i<$number_length;$i++){ $received_number_array[$i] = substr($number,$i,1); } //Populate the empty array with the numbers received - most critical operation for($i=9-$number_length,$j=0;$i<9;$i++,$j++){ $number_array[$i] = $received_number_array[$j]; } $number_to_words_string = ""; //Finding out whether it is teen ? and then multiplying by 10, example 17 is seventeen, so if 1 is preceeded with 7 multiply 1 by 10 and add 7 to it. for($i=0,$j=1;$i<9;$i++,$j++){ if($i==0 || $i==2 || $i==4 || $i==7){ if($number_array[$i]=="1"){ $number_array[$j] = 10+$number_array[$j]; $number_array[$i] = 0; } } } $value = ""; for($i=0;$i<9;$i++){ if($i==0 || $i==2 || $i==4 || $i==7){ $value = $number_array[$i]*10; } else{ $value = $number_array[$i]; } if($value!=0){ $number_to_words_string.= $words["$value"]." "; } if($i==1 && $value!=0){ $number_to_words_string.= "Crores "; } if($i==3 && $value!=0){ $number_to_words_string.= "Lakhs "; } if($i==5 && $value!=0){ $number_to_words_string.= "Thousand "; } if($i==6 && $value!=0){ $number_to_words_string.= "Hundred "; } } if($number_length>9){ $number_to_words_string = "Sorry This does not support more than 99 Crores"; } return ucwords(strtolower("Rupees ".$number_to_words_string)." Only."); } ?>