最近在看一些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. HDU 3001 Travelling 3进制状压dp

    题意:10个点,若干条边,边有花费,每个点最多走两次,求走过所有点,花费最少 分析:因为每个点最多走两次,所以联想到3进制,然后枚举状态,就行了(我也是照着网上大神的代码写的) #include &l ...

  2. 【原】Storm 守护线程容错机制

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  3. MFC常用类

    CString CStringT 操作可变长度字符串的模板类CStringT有三个实例:CString.CStringA和CStringW,它们分别提供对TCHAR.char和wchar_t字符类型的 ...

  4. vim讲解

    文本编辑vi使用 最好使用vim,采用sudo apt-get install vim vi是Linux及类Unix系统中主流的命令行文本编辑器,功能极为强大,vim是增强版本的vim.Vim的高级地 ...

  5. PHP算法之二分查找和顺序查找

    一.二分查找 (数组里查找某个元素) /** * 二分查找 (数组里查找某个元素) * $k为要查找的关键字(注:待查找的数组元素为奇数个)$low为查找范围的最小键值,$high为查找范围的最大键值 ...

  6. 【原创】lua的module的一些点

    lua的module好像是5.1开始有的 在xx.lua的开头写上 module('my_module') 这行等价于如下几行 local name = 'my_module' local M = { ...

  7. Guide to make CentOS 7 the perfect desktop

    原文地址:  http://www.dedoimedo.com/computers/fedora-pimp.html My original review of CentOS 7 was less e ...

  8. ubuntu下PHP支持cURL

    公司项目需要,注册需要验证手机号码,其中需要LAMP支持cURL.由于事先安装平台的时候,并没有注意到这一点,所以编译PHP5的时候,并没有使用参数--with-curl.后来需要的时候,查一些参考方 ...

  9. ActivityNotFoundException: No Activity found to handle Intent

    代码如下: Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction ...

  10. UIImagePickerController Class 概述

    不能定制界面,不可派生子类. 使用步骤: 检查制定源是否可用. isSourceTypeAvailable:方法.    检查可用媒体(视频还是只能是图片) availableMediaTypesFo ...