最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子。
注:这个小算法适用于10万以内的金额。
<?php
//$num = 12345.67;
function RMB_Upper($num)
{
$num = round($num,2); //取两位小数
$num = ''.$num; //转换成数字
$arr = explode('.',$num); $str_left = $arr[0]; //
$str_right = $arr[1]; // $len_left = strlen($str_left); //小数点左边的长度
$len_right = strlen($str_right); //小数点右边的长度 //循环将字符串转换成数组,
for($i=0;$i<$len_left;$i++)
{
$arr_left[] = substr($str_left,$i,1);
}
//print_r($arr_left);
//output:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) for($i=0;$i<$len_right;$i++)
{
$arr_right[] = substr($str_right,$i,1);
}
//print_r($arr_right);
//output:Array ( [0] => 6 [1] => 7 ) //构造数组$daxie
$daxie = array(
'0'=>'零',
'1'=>'壹',
'2'=>'贰',
'3'=>'叁',
'4'=>'肆',
'5'=>'伍',
'6'=>'陆',
'7'=>'柒',
'8'=>'捌',
'9'=>'玖',
); //循环将数组$arr_left中的值替换成大写
foreach($arr_left as $k => $v)
{
$arr_left[$k] = $daxie[$v];
switch($len_left--)
{
//数值后面追加金额单位
case 5:
$arr_left[$k] .= '万';break;
case 4:
$arr_left[$k] .= '千';break;
case 3:
$arr_left[$k] .= '百';break;
case 2:
$arr_left[$k] .= '十';break;
default:
$arr_left[$k] .= '元';break;
}
}
//print_r($arr_left);
//output :Array ( [0] => 壹万 [1] => 贰千 [2] => 叁百 [3] => 肆十 [4] => 伍元 ) foreach($arr_right as $k =>$v)
{
$arr_right[$k] = $daxie[$v];
switch($len_right--)
{
case 2:
$arr_right[$k] .= '角';break;
default:
$arr_right[$k] .= '分';break;
}
}
//print_r($arr_right);
//output :Array ( [0] => 陆角 [1] => 柒分 ) //将数组转换成字符串,并拼接在一起
$new_left_str = implode('',$arr_left);
$new_right_str = implode('',$arr_right); $new_str = $new_left_str.$new_right_str; //echo $new_str;
//output :'壹万贰千叁百肆十伍元陆角柒分' //如果金额中带有0,大写的字符串中将会带有'零千零百零十',这样的字符串,需要替换掉
$new_str = str_replace('零万','零',$new_str);
$new_str = str_replace('零千','零',$new_str);
$new_str = str_replace('零百','零',$new_str);
$new_str = str_replace('零十','零',$new_str);
$new_str = str_replace('零零零','零',$new_str);
$new_str = str_replace('零零','零',$new_str);
$new_str = str_replace('零元','元',$new_str); //echo'<br/>';
return $new_str;
} echo RMB_Upper(12345.67);
PHP算法--将数字金额转换成大写金额的更多相关文章
-
C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
-
JavaScript将输入的数字金额转换成对应的中文大写金额
// 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...
-
PHP 数字金额转换成中文大写金额的函数 数字转中文
/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...
-
JS把数字金额转换成中文大写数字的函数
//把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...
-
c#将输入的人民币数字金额转换成小写
//// <summary> /// 人民币大小写金额转换 /// </summary> class RMBCapitalization { private const str ...
-
irport报表,把数字金额转换成大写人民币金额
1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...
-
c#金额转换成中文大写金额
2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...
-
转一个财务方面常用到的数字金额转成汉字大写金额 php类
系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 ...
-
c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
随机推荐
-
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建 ...
-
java--- Map详解
Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...
-
Out of resources when opening file 错误解决
mysqldump: Got error: 23: Out of resources when opening file ‘./mydb/tax_calculation_rate_title.MYD’ ...
-
linux的strace命令用法
strace命令用法 调用:strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] …[ -ofile ] [ -ppid ] … [ -sstrsize ...
-
PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
上次我们说到了,wmi对象和com组件,今天我们继续来看PS中对象的相关内容.主要说一下静态对象和对象的基本操作. 一.静态对象 在PS中有一类特殊的对象,我们不能同过这些类创建新的对象,这些类是不能 ...
-
bzoj 3879 虚树
题目大意: 给一个字符串,多次询问k个后缀,求它们两两间LCP长度总和 分析: 转化为后缀树,用虚树求 注意: 后缀树中代表后缀的点都是叶子节点 题目中取模并没有卵用 #include <cst ...
-
redis应用-分布式锁
一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去.如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个操作不是原子的. set lock:cod ...
-
JB的IDE可视化MongoDB、MySQL数据库信息
一.问题: 在使用JB的IDE的时候(pycharm.IDEA等)可视化mysql和mongodb的数据库信息,效果如下 MySQL: MongoDB: 可视化数据表关系: 二.方法: 1.MySQ ...
-
Fastjson 实体类JSON化过滤字段操作-PropertyFilter
过滤实体类中年龄等于5的字段 List<Users> models=new ArrayList<>(); for(int i=0;i<11;i++){ Users mod ...
-
多CPU,多核,多进程,多线程
当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位(调度单位). 3.一个进程可以包括多个线程. 4.在 ...