国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php 把數字轉換成漢字的代碼

2024-05-04 23:37:58
字體:
來源:轉載
供稿:網友

在一次面試中遇到一個有意思的小算法題:要求將阿拉伯數字轉為漢字顯示出來(包含單位)。當時雖然實現出來,但是代碼寫的有點凌亂。所以回家后,重新整理了一下。

直接上實例,寫到 千億上了。

 

 
  1. /** 
  2.  
  3. * @author ja頌  
  4. * 把數字1-1億換成漢字表述,如:123->一百二十三 
  5. * @param [num] $num [數字] 
  6. * @return [string] [string] 
  7. */ 
  8. function numToWord($num) 
  9. $chiNum = array('零''一''二''三''四''五''六''七''八''九'); 
  10. $chiUni = array('','十''百''千''萬''億''十''百''千'); 
  11.  
  12. $chiStr = ''
  13.  
  14. $num_str = (string)$num; 
  15.  
  16. $count = strlen($num_str); 
  17. $last_flag = true//上一個 是否為0 
  18. $zero_flag = true//是否第一個 
  19. $temp_num = null//臨時數字 
  20.  
  21. $chiStr = '';//拼接結果 
  22. if ($count == 2) {//兩位數 
  23. $temp_num = $num_str[0]; 
  24. $chiStr = $temp_num == 1 ? $chiUni[1] : $chiNum[$temp_num].$chiUni[1]; 
  25. $temp_num = $num_str[1]; 
  26. $chiStr .= $temp_num == 0 ? '' : $chiNum[$temp_num];  
  27. }else if($count > 2){ 
  28. $index = 0; 
  29. for ($i=$count-1; $i >= 0 ; $i--) {  
  30. $temp_num = $num_str[$i]; 
  31. if ($temp_num == 0) { 
  32. if (!$zero_flag && !$last_flag ) { 
  33. $chiStr = $chiNum[$temp_num]. $chiStr; 
  34. $last_flag = true
  35. }else
  36. $chiStr = $chiNum[$temp_num].$chiUni[$index%9] .$chiStr; 
  37.  
  38. $zero_flag = false
  39. $last_flag = false
  40. $index ++; 
  41. }else
  42. $chiStr = $chiNum[$num_str[0]];  
  43. return $chiStr; 
  44.  
  45. $num = 150; 
  46. echo numToWord($num); 

方法二:

 

  1. <?php 
  2. /** 
  3. * 數字轉換為中文 
  4. * @param string|integer|float $num 目標數字 
  5. * @param integer $mode 模式[true:金額(默認),false:普通數字表示] 
  6. * @param boolean $sim 使用小寫(默認) 
  7. * @return string 
  8. */ 
  9. function number2chinese($num,$mode = true,$sim = true){ 
  10. if(!is_numeric($num)) return '含有非數字非小數點字符!'
  11. $char = $sim ? array('零','一','二','三','四','五','六','七','八','九'
  12. : array('零','壹','貳','叁','肆','伍','陸','柒','捌','玖'); 
  13. $unit = $sim ? array('','十','百','千','','萬','億','兆'
  14. : array('','拾','佰','仟','','萬','億','兆'); 
  15. $retval = $mode ? '元':'點'
  16. //小數部分 
  17. if(strpos($num, '.')){ 
  18. list($num,$dec) = explode('.', $num); 
  19. $dec = strval(round($dec,2)); 
  20. if($mode){ 
  21. $retval .= "{$char[$dec['0']]}角{$char[$dec['1']]}分"
  22. }else
  23. for($i = 0,$c = strlen($dec);$i < $c;$i++) { 
  24. $retval .= $char[$dec[$i]]; 
  25. //整數部分 
  26. $str = $mode ? strrev(intval($num)) : strrev($num); 
  27. for($i = 0,$c = strlen($str);$i < $c;$i++) { 
  28. $out[$i] = $char[$str[$i]]; 
  29. if($mode){ 
  30. $out[$i] .= $str[$i] != '0'? $unit[$i%4] : ''
  31. if($i>1 and $str[$i]+$str[$i-1] == 0){ 
  32. $out[$i] = ''
  33. if($i%4 == 0){ 
  34. $out[$i] .= $unit[4+floor($i/4)]; 
  35. $retval = join('',array_reverse($out)) . $retval; 
  36. return $retval; 
  37. //實例調用===================================================== 
  38. $num = '0123648867.789'
  39. echo $num,'<br>'
  40. //普通數字的漢字表示 
  41. echo '普通:',number2chinese($num,false),''
  42. echo '<br>'
  43. //金額漢字表示 
  44. echo '金額(簡體):',number2chinese($num,true),''
  45. echo '<br>'
  46. echo '金額(繁體):',number2chinese($num,true,false); 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳春市| 临澧县| 吴川市| 武邑县| 延吉市| 乾安县| 海安县| 开阳县| 山阳县| 桑日县| 比如县| 陈巴尔虎旗| 二手房| 博爱县| 张家界市| 剑河县| 永春县| 赤峰市| 海安县| 黄梅县| 射洪县| 平定县| 洪江市| 同仁县| 六盘水市| 白山市| 中超| 江城| 油尖旺区| 大理市| 新丰县| 北宁市| 莱西市| 高雄县| 石楼县| 定远县| 老河口市| 贵阳市| 桑日县| 临沧市| 云龙县|