PHP实现金额数字转换成大写函数

<?php
header("Content-Type:text/html;charset=utf-8");

        function num_to_upper($num)
        {
            $d = array(‘零‘,‘壹‘,‘贰‘,‘叁‘,‘肆‘,‘伍‘,‘陆‘,‘柒‘,‘捌‘,‘玖‘);
            $e = array(‘元‘,‘拾‘,‘佰‘,‘仟‘,‘万‘,‘拾万‘,‘佰万‘,‘仟万‘,‘亿‘,‘拾亿‘,‘佰亿‘,‘仟亿‘,‘万亿‘);
            $p = array(‘分‘,‘角‘);
            $zheng=‘整‘; //追加"整"字
            $final = array(); //结果
            $inwan=0; //是否有万
            $inyi=0; //是否有亿
            $len_pointdigit=0; //小数点后长度
            $y=0;
            if($c = strpos($num, ‘.‘)) {    //有小数点,$c为小数点前有几位数
                $len_pointdigit = strlen($num)-strpos($num, ‘.‘)-1; // 判断小数点后有几位数
                if($c>13) { //简单的错误处理
                    echo "数额太大,已经超出万亿.";
                    die();
                } elseif($len_pointdigit>2) {   //$len_pointdigit小数点后有几位
                    echo "小数点后只支持2位.";
                    die();
                }
            } else {    //无小数点
                $c = strlen($num);
                $zheng = ‘整‘;
            }
            for($i=0;$i<$c;$i++) {  //处理整数部分
                $bit_num = substr($num, $i, 1); //逐字读取 左->右
                if($bit_num!=0 || substr($num, $i+1, 1)!=0) //当前是零 下一位还是零的话 就不显示
                    @$low2chinses = $low2chinses.$d[$bit_num];
                if($bit_num || $i==$c-1)
                    @$low2chinses = $low2chinses.$e[$c-$i-1];
            }
            for($j=$len_pointdigit; $j>=1; $j--) {  //处理小数部分
                $point_num = substr($num, strlen($num)-$j, 1); //逐字读取 左->右
                if($point_num != 0)
                    @$low2chinses = $low2chinses.$d[$point_num].$p[$j-1];
            //  if(substr($num, strlen($num)-2, 1)==0 && substr($num, strlen($num)-1, 1)==0) //小数点后两位都是0
            }
            $chinses = str_split($low2chinses,2); //字符串转换成数组
            //print_r($chinses);
            for($x=sizeof($chinses)-1;$x>=0;$x--) {     //过滤无效的信息
                if($inwan==0&&$chinses[$x]==$e[4]) {    //过滤重复的"万"
                    $final[$y++] = $chinses[$x];
                    $inwan=1;
                }
                if($inyi==0&&$chinses[$x]==$e[8]) {     //过滤重复的"亿"
                    $final[$y++] = $chinses[$x];
                    $inyi=1;
                    $inwan=0;
                }
                if($chinses[$x]!=$e[4]&&$chinses[$x]!=$e[8]) //进行整理,将最后的值赋予$final数组
                $final[$y++] = $chinses[$x];
            }
            $newstring=(array_reverse($final)); //$final为倒数组,$newstring为正常可以使用的数组
            $nstring=join($newstring); //数组变成字符串
            if(substr($num,-2,1)==0 && substr($num,-1)<>0) {    //判断原金额角位为0 ? 分位不为0 ?
                $nstring=substr($nstring,0,(strlen($nstring)-4))."零".substr($nstring,-4,4); //这样加一个零字
            }
            $fen="分";
            $fj=substr_count($nstring, $fen); //如果没有查到分这个字
            return $nstring=($fj==0)?$nstring.$zheng:$nstring; //就将"整"加到后面
        } 

   echo num_to_upper(1234.56);

?>

时间: 2024-10-05 04:06:47

PHP实现金额数字转换成大写函数的相关文章

小写金额转换成大写 - 函数脚本

原文:小写金额转换成大写 - 函数脚本 /********************************************************作者:版本:创建时间:修改时间:功能:小写金额转换成大写参数:输出:大写金额********************************************************/ CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,2))RETURNS varchar(100) WI

js将数字转换成大写的人民币表达式

function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字 var cnIntRadice = new Array(&qu

python首字母转换成大写函数

现在有个需求: 假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list: 输入:['adam', 'LISA', 'barT']            输出:['Adam', 'Lisa', 'Bart'] 原先想法是将字符分离,第一个转换为大写,其余转换为小写: def format_name(s):     return "%s" % (s[:1].upper() + 

C# 数字转换成大写

1 /// <summary> 2 /// 数字转大写 3 /// </summary> 4 /// <param name="type">单价/数量</param> 5 /// <param name="Num">数字</param> 6 /// <returns></returns> 7 public static string GetChineseNum(strin

金额转换成大写

package com.liany.demo.translate; import java.math.BigDecimal; /** * @Description: 金额转换成大写 * @author huangzjb [email protected] * @Company Digital China * @date 2015-1-29 下午07:48:02 * @version 1.0 */ public class TransformMoney { /* 以下摘自百度百科:http://b

SQL函数:小写金额转换成大写

/********************************************************作者:版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n_LowerMoney 小写金额v_TransType 种类 -- 1: directly translate, 0: read it in words 输出:大写金额********************************************************/if exists

数字转换成中文大小写、金额大小写

将数字转换成中文大小写.金额大小写  /// <summary> /// 将数字转换成中文大写 /// </summary> /// <param name="Value">数字</param> /// <param name="bToUpper">是否转换成汉字大写 true表示大写 false表示小写</param> /// <param name="bMoney"

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

oracle数据库使用游标实现大写数字转换成小写数字

项目遇到需求,需要将大写数字转换成小写.代码如下: declare t_zl varchar2(100); t_ts varchar2(100); t_l number; hh varchar2(100); xx varchar2(100); type TIArray is table of varchar2(100);  type TCArray is table of varchar2(100); A TIArray;  B TCArray; cursor c is select zl,ts