财务金额转换:小写金额转换成大写算法
本方法思路,是将数字分成整数、小数两部分分别处理:
1、 整数部分按照4位一组进行分段,具体详见代码中的array_chunk操作
2、小数部分,为了简单,没有考虑更多小数精度,仅考虑到了“分”,实际可以参照整数部分的处理,更精细化
另外,受限于php语言默认的变量范围大小影响,当数值过大后,会造成小数部分被舍去,这个参照sprintf("%.2f",....)取浮点数的时候,改变其算法即可。 不过一般来说不会超过
其它溢出:若数字超过了stepInt的长度,会报错,但一般你也超过不了,数字最大长度支持到:10^(4 * 18), 大约72位数字长度。这个估计已经超出人的正常读写范围了。
if (! function_exists('num2rmb')) {/*** 数字转换成rmb大写形式* @param string|number $num* @return string*/function num2rmb($num){list($int, $float) = explode('.', sprintf("%.2f", $num));$intArr = array_chunk(str_split(strrev($int), 1), 4);$floatArr = str_split($float, 1);// 字典定义$stepInt = ['', '万','亿','兆','京','垓','秭','穰','沟','涧','正','载','极','恒河沙','阿僧祇','那由他','不可思议','无量大数'];//$stepFloat = ['角', '分', '厘', '毫', '丝', '忽', '微', '纤', '沙', '尘', '埃', '渺', '莫', '模糊', '逡巡', '须臾', '瞬息', '弹指', '刹那', '六德', '空虚', '清静'];$dict = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];// 返回变量$res = [];// 整数部分处理, 四个数字为一段,分段处理foreach ($intArr as $k => $spec) {// 长度不够强制长度转成一样$len = count($spec);if ($len < 4) array_push($spec, ...array_fill(0, 4 - $len, 0));list($n1, $n10, $n100, $n1000) = $spec; // 跳过为0的if ($n1000 + $n100 + $n10 + $n1 == 0) continue;$row = [];$row[] = ($n1000 == 0) ? '?' : $dict[$n1000] . '仟';$row[] = ($n100 == 0) ? '?' : $dict[$n100] . '佰';$row[] = ($n10 == 0) ? '?' : $dict[$n10] . '拾';$row[] = ($n1 == 0) ? '?' : $dict[$n1];// 最多可能四个数字都为0$s = str_replace(['?', '??', '???'], '零', trim(join($row), '?')) . $stepInt[$k];;if ($k > 0 && ($n1000 == 0)) {array_unshift($res, '零');}array_unshift($res, $s);}// 过滤个位数为0的情况if ($res[count($res) - 1] == '零') {array_pop($res);}array_push($res, '圆');// 小数部分处理list($jiao, $fen) = $floatArr;if ($jiao + $fen == 0) {array_push($res, '整');} else {if ($jiao == 0) {array_push($res, '零');array_push($res, $dict[$fen] . '分');} else {array_push($res, $dict[$jiao] . '角');array_push($res, $dict[$fen] . '分');}}return join($res);}
}
财务金额转换:小写金额转换成大写算法相关推荐
- 输入一串字符串,将其中的大写字母换成小写,小写字母换成大写输出。
题目: 输入一串字符串,将其中的大写字母换成小写,小写字母换成大写输出.例如输入abdAd,输出ABDaD. 分析: 题目的关键在于大小写的转换问题,ASCII字符编码的了解和转换问题. 对于ASCI ...
- c语言字符串的一个简单例子,把一个字符串中的小写字母改成大写字母
把一个字符串中小写字母改成大写字母,利用toupper()函数,这个函数定义在 ctype.h 头文件中 #include <stdio.h> #include <ctype.h&g ...
- 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串
package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd&quo ...
- 遍历这些字符串,如果字符串没有包含数字的, * 就将字符串中的小写字母转成大写字母并打印字符串
package Day08;import java.util.Scanner;/*** 有如下字符串:"12ab","java","cd", ...
- 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母
试题描述 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母. 输入格式 输入一行:待互换的字符串. 输出格式 输出一行:完成互换的字符串(字符串长度小于80). 样例输入 ...
- 【函数参数传递】编写一个函数,统计字符串中小写字母的个数,并把字符串中的小写字母转化成大写字母。
字符串怎么存? 先把字符串中的小写字母统计出来,用strfun()这个函数.当功能比较复杂的时候就一步一步来做. 然后把数组传过来.数组名就是一个指针.需要一个返回值,来记录小写字母的个数,n=str ...
- 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
/* 分析:1,接受一个字符串. 2,大小写转换. */ public class Demo7 { public static void main(String[] args)throw ...
- 将字符串中的小写字母换成大写
C语言将字符串中的小写换成大写 思路:看ASCII码表,字母的大小写之间相差'32','a'比'A'大32,当遇见小写字母的时候,可以先强制转换成整型,然后-32,再强制转换成字符型输出. #incl ...
- 将字符串中的小写字母换成大写字母
D:将字符串中的小写字母转换成大写字母 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个字符串,将其中所有的小写字母转换成大写字母. 输入 输入一行,包含 ...
- 将内存单元中小写字符改成大写字符
assume cs:codedata segment db 'conversation' data endscode segment start: mov ax,datamov ds,axmov si ...
最新文章
- UISearchBar和 UISearchDisplayController的使用
- boost::cuthill_mckee_ordering用法的测试程序
- Python+Selenium基础篇之2-打开和关闭火狐浏览器
- web中间件_HTTP中间件机制实现与原理 - 从零开始写GO-API框架
- 软件测试之python面试题_常见Python面试题整理带答案
- html音乐静音代码,HTML Audio muted用法及代码示例
- Android Stuido插件
- [转]Chrome 错误代码:ERR_UNSAFE_PORT
- RedHat RealTime Kernel
- 第2章 藏书阁签到,修为突破
- 《将月夜》——高宠儿
- Collections、Set、Map、斗地主排序
- uniapp、vue实现滑动拼图验证码
- 停车位检测方法研究综述
- 小扎不要「脸」了?Facebook正式改名Meta!买它,满仓元宇宙
- 神经网络:AlexNet
- 测试与自动化测试,记测试工具Go4Api的诞生
- vue完整项目,实现即可上岗web前端。
- 《调色师手册:电影和视频调色专业技法(第2版)》——往返工作流程(Round-Trip workflows)...
- 4.4 埃尔米特插值
热门文章
- std::decay 类型萃取
- VJ 1385 盗窃-月之眼
- 数仓中的维度、原子指标、派生指标、衍生指标、指标分类、缓慢变化维等的含义
- Pyside2 Qlabel如何快速添加click鼠标单击事件(新手上路,勿喷!)
- 二元二次方程 c语言,C语言求解三元一次方程组的解
- 高通平台DDR3初始化
- 专升本高数——第二章 一元函数的导数与微分【学习笔记】
- BIOS实战之Super IO-Smart Fan
- GAN相关论文《Spectral Regularization for Combating Mode Collapse in GANs》
- 计算机usb接口失灵,电脑usb接口全部失灵