zoukankan      html  css  js  c++  java
  • PHP 数字转汉字函数

    /**
     * 数字转汉字描述
     */
    function numToStr($num)
    {
        // 判断正确数字
        if (!preg_match('/^(d*)(.d+)?$/', $num)) return '不是正确的数字!';
    
        // 准备参数
        $num = ltrim($num, '0');
        $num_arr  = ['', '一', '两', '三', '四', '五', '六', '七', '八', '九'];
        $desc_arr = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万亿', '十', '百', '千', '万万亿', '十', '百', '千'];
    
        // 按字符串处理
        $count = strlen($num);
        if ($count > count($desc_arr)) return '数字超出计算范围!';
        $point = strpos($num, '.') ?: $count;    // 没有点时取count
    
        for ($i = 0; $i < $count; $i++) {
            $cn_zero = $num[$i] !== '0' && $num[$i - 1] === '0' && $num[$i] !== '.' ? '零' : '';    // 是否输出零
            $cn_num  = $i > $point && !$num_arr[$num[$i]] ? '零' : $num_arr[$num[$i]];    // 输出字数
            $j = $point - $i - 1;    // 计算单位数
            $cn_desc = $num[$i] == '0' && $j % 4 != 0 || substr($num, $i - 3, 4) === '0000' ? '' : $desc_arr[$j];    // 输出单位
            if ($i == 0 && $cn_desc == '十') $cn_num = '';    // 国人习惯一十开头不读一
            if ($i === $point) $res .= '点';    // 输出点
            $res .=  $cn_zero . $cn_num . $cn_desc;
        }
        return $res;
    }
    

      1001.3输出一千零一点三

      欢迎测试反馈~

  • 相关阅读:
    css 如何隐藏滚动条
    点击元素之外隐藏
    css3 box-shadow
    video常用功能
    input依次输入密码
    响应式布局基础
    数据库
    面试题
    pandas
    Numpy
  • 原文地址:https://www.cnblogs.com/oldphper/p/4789186.html
Copyright © 2011-2022 走看看