zoukankan      html  css  js  c++  java
  • 数字转化为人民币大写(PHP)

     1 <?php
     2 function numTrmb($num)
     3 {
     4     $d = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
     5     $e = array('元', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿', '拾亿', '佰亿', '仟亿');
     6     $p = array('分', '角');
     7     $zheng = "整";
     8     $final = array();
     9     $inwan = 0;//是否有万
    10     $inyi = 0;//是否有亿
    11     $len = 0;//小数点后的长度
    12     $y = 0;
    13     $num = round($num, 2);//精确到分
    14     if (strlen($num) > 15) {
    15         return "金额太大";
    16         die();
    17     }
    18     if ($c = strpos($num, '.')) {//有小数点,$c为小数点前有几位
    19         $len=strlen($num)-strpos($num,'.')-1;//小数点后有几位数
    20     }else {//无小数点
    21         $c = strlen($num);
    22         $zheng = '整';
    23     }
    24     for ($i = 0; $i < $c; $i++) {
    25         $bit_num = substr($num, $i, 1);
    26         if ($bit_num != 0 || substr($num, $i + 1, 1) != 0) {
    27             @$low = $low . $d[$bit_num];
    28         }
    29         if ($bit_num || $i == $c - 1) {
    30             @$low = $low . $e[$c - $i - 1];
    31         }
    32     }
    33     if($len!=1){
    34     for ($j = $len; $j >= 1; $j--) {
    35         $point_num = substr($num, strlen($num) - $j, 1);
    36            @$low = $low . $d[$point_num] . $p[$j - 1];
    37     }
    38     }else{
    39         $point_num = substr($num, strlen($num) - $len, 1);
    40         $low=$low.$d[$point_num].$p[$len];
    41     }
    42     $chinses = str_split($low, 3);//字符串转化为数组
    43     for ($x = count($chinses) - 1; $x >= 0; $x--) {
    44         if ($inwan == 0 && $chinses[$x] == $e[4]) {//过滤重复的万
    45             $final[$y++] = $chinses[$x];
    46             $inwan = 1;
    47         }
    48         if ($inyi == 0 && $chinses[$x] == $e[8]) {//过滤重复的亿
    49             $final[$y++] = $chinses[$x];
    50             $inyi = 1;
    51             $inwan = 0;
    52         }
    53         if ($chinses[$x] != $e[4] && $chinses[$x] !== $e[8]) {
    54             $final[$y++] = $chinses[$x];
    55         }
    56     }
    57     $newstr = (array_reverse($final));
    58     $nstr = join($newstr);
    59     if ((substr($num, -2, 1) == '0') && (substr($num, -1) <> 0)) {
    60         $nstr = substr($nstr, 0, (strlen($nstr) -6)).'零'. substr($nstr, -6, 6);
    61     }
    62     $nstr=(strpos($nstr,'零角')) ? substr_replace($nstr,"",strpos($nstr,'零角'),6) : $nstr;
    63     return $nstr = (substr($nstr,-3,3)=='元') ? $nstr . $zheng : $nstr;
    64 }
    65 echo numTrmb(556455456156.65);
  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/inc-is-include/p/5039173.html
Copyright © 2011-2022 走看看