麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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); 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人区 | 午夜视频你懂的 | 久久在线精品视频 | 一区二区久久久久草草 | 免费毛片观看 | 久久久一区二区三区四区 | 黄色片网站在线免费观看 | 久久久久久久一区二区三区 | 亚洲第一黄色网 | 精品国产九九九 | 国产91一区| 欧美 日韩 国产 在线 | 中文字幕在线播放不卡 | 日本在线视频一区二区三区 | 日韩中文字幕一区二区三区 | 国产成人精品午夜视频' | 精品一区二区久久久久久按摩 | 亚洲激情91 | 亚洲成人伊人 | 91短视频在线播放 | 欧美一级成人一区二区三区 | 亚洲精品久久久久久久久久久 | 久久亚洲美女视频 | 久久久久久高清 | 精品一区二区三区免费毛片 | av在线观 | 中文字幕在线成人 | 91久久国产综合久久91精品网站 | 成人一区二区三区在线 | 国产一级一区二区三区 | 欧美日韩国产一区二区三区在线观看 | 欧美成人精品一区二区三区 | av电影在线播放 | 色网站免费观看 | 久久精品99国产国产精 | 久久久久国产精品久久久久 | 久久久久久久久久久av | 中文字幕网在线 | 日韩一级免费毛片 | 99精品视频在线看 | 久久国产精品小视频 |