最近在看一些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算法--将数字金额转换成大写金额的更多相关文章

  1. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  2. JavaScript将输入的数字金额转换成对应的中文大写金额

    // 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...

  3. PHP 数字金额转换成中文大写金额的函数 数字转中文

    /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...

  4. JS把数字金额转换成中文大写数字的函数

    //把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...

  5. c#将输入的人民币数字金额转换成小写

    //// <summary> /// 人民币大小写金额转换 /// </summary> class RMBCapitalization { private const str ...

  6. irport报表,把数字金额转换成大写人民币金额

    1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...

  7. c#金额转换成中文大写金额

    2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param ...

  8. 转一个财务方面常用到的数字金额转成汉字大写金额 php类

    系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 ...

  9. c#金额转换成中文大写金额 .Net开发Windows服务

    c#金额转换成中文大写金额   2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...

随机推荐

  1. poj2686-Traveling by Stagecoach(状压dp)

    题意: n张马票,m个城市,马票上有马数(决定速度),一张只能用一次,给出地图,求从城市a到b的最短时间. 分析:n值很小状态压缩 #include <map> #include < ...

  2. 用pip爽久了,竟然完了easy install安装过程了

    新换了mac,装python环境时才发现,一直用pip,反而忘了easy_install的安装方法了.这里记录一下: 1.下载ez_install.py文件:https://bootstrap.pyp ...

  3. <转>DNS SOA记录

    http://www.sigma.me/2011/01/01/about_dns_soa.html 今天登入google webmaster,发现有好多crawl错误,一看,都是Domain name ...

  4. SVN server 安装 并创建用户访问

    1. 下载svn   官网https://www.visualsvn.com/server/download/ 或者其他网站都行,下载是VisualSVN-Server-3.5.6.msi. 2.安装 ...

  5. 基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发

    2013-03-03 这是研一上学期<实时嵌入式系统实验>课程的大作业,是利用野火板的资源,加上一个AHRS(Attitude and Heading Reference System,姿 ...

  6. 【OpenGL】入门

    根据OpenGL蓝宝书(OpenGL超级宝典)来入门,写的比较细,易懂,这里给我贴代码和记录零碎的事儿用 第一个代码 #include <gl/glut.h> void RenderSce ...

  7. caffe IDE 开发环境配置

    这篇博文主要记录caffe开发环境的种种. 在直接使用caffe的时候,需要对数据做格式转换.然后配置一个网络格式的描述文件即可进行训练.但是在做预测和格式转化的时候,我们需要将Caffe当作一个sd ...

  8. [iOS基础控件 - 6.4] 汽车品牌展示 Model嵌套/KVC/TableView索引

    A.需求 1.使用汽车品牌名称头字母为一个Model,汽车品牌为一个Model,头字母Model嵌套品牌Model 2.使用KVC进行Model封装赋值 3.展示头字母标题 4.展示索引(使用KVC代 ...

  9. Winform- DotNetBar for Windows Forms的安装的添加

    Winform界面不好看,偶尔在网上看到winform的界面美化,对比了一下选择了DotNetBar for Windows Forms 1.破解版网上很多,提供一个参考的下载地址http://dx. ...

  10. http协议分析工具

    资源推荐 1.Wireshark抓包软件 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshar ...