最近在看一些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. 【转】C/C++除法实现方式及负数取模详解

    原帖:http://blog.csdn.net/sonydvd123/article/details/8245057 一.下面的题目你能全做对吗? 1.7/4=? 2.7/(-4)=? 3.7%4=? ...

  2. Jquery UI的datepicker插件使用方法

    原文链接;http://www.ido321.com/375.html Jquery UI是一个非常丰富的Jquery插件,并且UI的各部分插件可以独自分离出来使用,这是其他很多Jquery插件没有的 ...

  3. uvalive 4795 Paperweight

    题意:给出一个5个顶点的多面体以及多面体内一点P.求让 多面体不同的方式(即以不同的面)放在地面上,设这个着地的面为A,多面体重心在A上的投影为B,在保证B在A内部且距离A的各个边界不小于0.2的前提 ...

  4. leetcode—Palindrome 解题报告

    1.题目描述 Given a string s, partition s such that every substring of the partition is a palindrome. Ret ...

  5. poj1743--Musical Theme(后缀数组)

    题意:求一列数字中走向相同的两个字序列,长度要求大于5 题解:相邻数字求差,原题就变成求相同的长度大于4的子串. [存疑:在保证两个子串不相交时觉得限定条件应该是大于x,但是wa了= = 不是很理解] ...

  6. ASP.NET SignalR2持久连接层解析

    越是到年底越是感觉浑身无力,看着啥也不想动,只期盼着年终奖的到来以此来给自己打一针强心剂.估摸着大多数人都跟我一样犯着这样浑身无力的病,感觉今年算是没挣到啥钱,但是话也不能这么说,搞得好像去年挣到钱了 ...

  7. 如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

    如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和 ...

  8. js中动态载入css js样式

    js中动态载入css样式,方法如下: //<link rel="stylesheet" type="text/css" href="http:/ ...

  9. 多路径配置vlome group共享存储,VG的更新。

    1.  PV的概念: a)        一块物理磁盘一块物理硬盘在被LVM管理时被称为“物理卷”. b)        在LVM能对其进行管理之前需要在硬盘上产生一些特殊的数据结构,这个过程就是建立 ...

  10. JNI-数据类型

    转载:http://blog.csdn.net/conowen/article/details/7523145 在Java中有两类数据类型:primitive types,如,int, float, ...