IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 数字转人民币大写,PHP实现 -> 正文阅读

[PHP知识库]数字转人民币大写,PHP实现

/**
 * 获取人民币数字大写
 * @param int|string $num
 * @return string
 */
function get_rmb(int|string $num): string
{
    $str = '';

    $a = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    $b = ['分', '角', '元', '整'];
    $c = ['', '拾', '佰', '仟'];
    $d = ['万', '亿'];

    // 四舍五入 保留两位小数
    $num = sp_round($num, 2);

    // 反转字符串
    $num = strrev($num);

    // 小数
    if (($point = strpos($num, '.')) !== false) {
        if ($point == 2) {
            $str .= $b[0] . $a[$num[0]] . ($num[1] ? $b[1] : '') . $a[$num[1]]; // 角分
        } else {
            $str .= $b[1] . $a[$num[0]]; // 角
        }
        $num = substr($num, $point + 1);
    } else {
        $str .= $b[3]; // 整
    }

    $str .= $b[2]; // 元

    $is_pass = false; // 是否经过一位非零数字
    $no_zero = true; // 没有零
    $len = strlen($num); // 字符串长度

    // 第一位数字
    if ($num[0]) {
        $is_pass = true;
        $str .= $a[$num[0]];
    }

    // 第一位以后
    for ($i = 1; $i < $len; ++ $i) {

        // 处理万亿
        if (($mod = $i % 4) == 0) {
            $is_pass = false; // 是否经过一位非零数字
            $no_zero = true; // 没有零

            $div = intdiv($i, 4);
            $str .= str_repeat($d[1], intdiv($div, 2)); // 亿
            $str .= $div % 2 ? $d[0] : ''; // 万
        }

        if ($num[$i]) {
            $is_pass = true;
            $str .= $c[$mod] . $a[$num[$i]];
        } else {
            if ($is_pass && $no_zero) {
                $str .= $a[$num[$i]];
                $no_zero = false;
            }
        }
    }

    return mb_strrev($str); // 反转多字节字符串
}


v(get_rmb('1004560007807005.123456'));
v(get_rmb('123456789012304560.99956'));

注:依赖? sp_round函数(对长数字字符串四舍五入)mb_strrev函数(反转多字节字符串),之前文章有

执行结果:

 

                
        
        
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:23:49  更:2021-11-14 21:24:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:45:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码