PHP算法--将数字金额转换成大写金额
最近在看一些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> ...
随机推荐
- 最短路径算法Dijkstra和A*
在设计基于地图的游戏,特别是isometric斜45度视角游戏时,几乎必须要用到最短路径算法.Dijkstra算法是寻找当前最优路径(距离原点最近),如果遇到更短的路径,则修改路径(边松弛). Ast ...
- sizeof的作用——解释类中与类之外static变量的情况
今天看程序员面试宝典的时候遇到一个问题,书上有这么一句话:sizeof计算栈中分配的大小.咋一看这句话的时候,很不理解,难道像函数中类似于static.extern const类型的变量的sizeof ...
- 【暑假】[数学]UVa 10375 Choose and divide
UVa 10375 Choose and divide 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19601 思路 ...
- html中a标签中的onclick和href的使用
1. 链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接): 假设链接中同时存在 href 与 onclick,如果想让 href 属性下 ...
- codeforce 600C - Make Palindrome
练习string 最小变换次数下,且字典序最小输出回文串. #include <cstdio> #include <cstring> #include <cmath> ...
- HUOJ-10857 最大的面积 凸包+DP
题目链接:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10857&courseid=55 比赛的时候 ...
- android 链接蓝牙不稳定的解决建议
My workaround I scan BLE for a short period of time 3-4 seconds then I turn scan OFF for 3-4 seconds ...
- Java中万恶的注解
本文由码农网 – 孙腾浩原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 当Java 1.5引入注解,企业开发者对简化EJB和其他企业产品开发抱有很大期望.可以看一看同一时期的一篇文章 ...
- Java中的IP对象以及本地域名解析
本地域名解析操作步骤: 1.打开C:\WINDOWS\system32\drivers\etc目录 2.找到host文件,用记事本打开 3.添加“空间IP 域名” package WebProgra ...
- [Objective-c 基础 - 2.8] category分类/类别/类目
A.给某个类扩充方法(不改变原来的类) 例如,给类Person加上名为Simon的category,加上一个-study方法 使用()注明 Person+Simon.h @interface Pers ...