阿拉伯数字转中文大(小)写的函数

函数|中文

<?
//chinese_money.php
//Changing Arab Money Num to Chinese Money Num
/*======================

Functions List:

Chinese_Money_Max()
小数点前
此函数可以单独拿出用于将阿拉伯数字转为中文数字(大小写可选,默认为大写)
仅限整数(正负皆可)

Chinese_Money_Min()
处理小数点后

Chinese_Money()

=======================*/

function Chinese_Money_Max($i,$s=1){
    $c_digit_min = array("零","十","百","千","万","亿","兆");
    $c_num_min = array("零","一","二","三","四","五","六","七","八","九","十");
    
    $c_digit_max = array("零","拾","佰","仟","万","亿","兆");
    $c_num_max = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾");
    
    if($s==1){
        $c_digit = $c_digit_max;
        $c_num = $c_num_max;
    }
    else{
        $c_digit = $c_digit_min;
        $c_num = $c_num_min;
    }
    
    if($i<0)
        return "负".Chinese_Money_Max(-$i);
    if ($i < 11)
        return $c_num[$i];
    if ($i < 20)
        return $c_num[1].$c_digit[1] . $c_num[$i - 10];
    if ($i < 100) {
        if ($i % 10)
            return $c_num[$i / 10] . $c_digit[1] . $c_num[$i % 10];
        else
            return $c_num[$i / 10] . $c_digit[1];
    }
    if ($i < 1000) {
        if ($i % 100 == 0)
            return $c_num[$i / 100] . $c_digit[2];
        else if ($i % 100 < 10)
            return $c_num[$i / 100] . $c_digit[2] . $c_num[0] . Chinese_Money_Max($i % 100);
        else if ($i % 100 < 10)
            return $c_num[$i / 100] . $c_digit[2] . $c_num[1] . Chinese_Money_Max($i % 100);
        else
            return $c_num[$i / 100] . $c_digit[2] . Chinese_Money_Max($i % 100);
    }
    if ($i < 10000) {
        if ($i % 1000 == 0)
            return $c_num[$i / 1000] . $c_digit[3];
        else if ($i % 1000 < 100)
            return $c_num[$i / 1000] . $c_digit[3] . $c_num[0] . Chinese_Money_Max($i % 1000);
        else
            return $c_num[$i / 1000] . $c_digit[3] . Chinese_Money_Max($i % 1000);
    }
    if ($i < 100000000) {
        if ($i % 10000 == 0)
            return Chinese_Money_Max($i / 10000) . $c_digit[4];
        else if ($i % 10000 < 1000)
            return Chinese_Money_Max($i / 10000) . $c_digit[4] . $c_num[0] . Chinese_Money_Max($i % 10000);
        else
            return Chinese_Money_Max($i / 10000) . $c_digit[4] . Chinese_Money_Max($i % 10000);
    }
    if ($i < 1000000000000) {
        if ($i % 100000000 == 0)
            return Chinese_Money_Max($i / 100000000) . $c_digit[5];
        else if ($i % 100000000 < 1000000)
            return Chinese_Money_Max($i / 100000000) . $c_digit[5] . $c_num[0] . Chinese_Money_Max($i % 100000000);
        else
            return Chinese_Money_Max($i / 100000000) . $c_digit[5] . Chinese_Money_Max($i % 100000000);
    }
    if ($i % 1000000000000 == 0)
        return Chinese_Money_Max($i / 1000000000000) . $c_digit[6];
    else if ($i % 1000000000000 < 100000000)
        return Chinese_Money_Max($i / 1000000000000) . $c_digit[6] . $c_num[0] . Chinese_Money_Max($i % 1000000000000);
    else
        return Chinese_Money_Max($i / 1000000000000) . $c_digit[6] . Chinese_Money_Max($i % 1000000000000);
}

function Chinese_Money_Min($a){
    $c_num = array("零","一","二","三","四","五","六","七","八","九","十");
    if($a<10)
        return $c_num[0] . "角" . $c_num[$a] . "分";
    else if($a%10 == 0)
        return $c_num[$a/10] . "角" . $c_num[0] . "分";
    else
        return $c_num[floor($a/10)] . "角" . $c_num[$a%10] ."分";
}

function Chinese_Money($i){
    $j=Floor($i);
    $x=($i-$j)*100;
    //return $x;
    return Chinese_Money_Max($j)."元".Chinese_Money_Min($x)."整";
}

//The Following Code is Testing The Functions:
/*
if($_submit=='Go')
    echo Chinese_Money($e_money);

echo "<form action='' method=post>";
echo "<input type=text name=e_money size=20>";
echo "<input type=submit name=_submit value='Go'>";

echo "</form>";
*/
?>

时间: 2025-01-21 07:00:03

阿拉伯数字转中文大(小)写的函数的相关文章

php-怎样删除二维数组中相同的一位数组 并保持相同键名 求大神写个函数

问题描述 怎样删除二维数组中相同的一位数组 并保持相同键名 求大神写个函数 Array ( [0] => Array ( [year] => 2013-2014 [term] => 1 [course_code] => 00008069 [course_name] => 咖啡世界 [course_nature] => 任意选修 [course_attribution] => 人文素养类 [credit] => 2.0 [point] => 4.1 [g

一个阿拉伯数字转中文数字的函数

函数|中文 最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的.感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改<?phpfunction ch_num($num,$mode=true) { $char = array("零","壹","贰","叁","肆","伍","陆",

一个阿拉伯数字转中文数字的函数_php基础

最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的.感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改<?phpfunction ch_num($num,$mode=true) {  $char = array("零","壹","贰","叁","肆","伍","陆","

控件-求大神帮忙写个函数,以控制datagrideview行列变化

问题描述 求大神帮忙写个函数,以控制datagrideview行列变化 2C 我做一个小程序,里面用到了很多数据库和Datagriedview控件,希望写一个全局函数,控制datagridview的行列宽度变化,以及插入和删除行或列(点击鼠标右键时出现插入和删除行列.以及复制粘贴). 在调用数据库后,能不能实现对数据的多行粘贴和复制. 谢谢了,急求. 解决方案 http://bbs.csdn.net/topics/360108393 解决方案二: 设置datagridview行列格式的函数呢?

阿拉伯数字转中文数字函数

函数|中文 将"54883661"转为"五千四百八十八万三千六百六十一"的函数 <%'################################'函数名:阿拉伯数字转中文数字函数'作者:网海求生者'QQ:54883661 date:2002.3.7'################################function chnumstr(num)strlen=len(num)for i=1 to strlenselect case mid(nu

编程-大神,CreateWindowExW函数该怎么写?

问题描述 大神,CreateWindowExW函数该怎么写? #includeLRESULT CALLBACK WndProc(HWNDUINTWPARAMLPARAM);int APIENTRY WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstanceLPSTR lpCmdLineint nCmdShow){ WNDCLASS wndclass; HWND hWnd; MSG msg; wndclass.style=CS_HREDRAW|CS_VRE

php阿拉伯数字转中文人民币大写_php技巧

本文实例为大家分享了php阿拉伯数字转中文人民币大写的实现代码,供大家参考,具体代码如下 代码1:php阿拉伯数字转中文人民币大写,有详细的注释 /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以

JavaScript实现阿拉伯数字和中文数字互相转换_javascript技巧

阿拉伯数字转中文数字中文数字的特点: 每个计数数字都跟着一个权位,权位有:十.百.千.万.亿. 以"万"为小节,对应一个节权位,万以下没有节权位. 每个小节内部以"十百千"为权位独立计数. "十百千"不能连续出现,而"万"和"亿"作为节权位时可以和其他权位连用,如:"二十亿". 中文数字对"零"的使用要满足以下三条规则: 以10000为小节,小节的结尾即使是0,也不使

C#中文加密小算法反加密

问题描述 最近没事看了一个朋友写的用C#加密中文的小算法,他让我尝试去写他的加密算法,他把解密算法给我看了下,可不知道怎么下手,对于位运算不熟悉,特此来请教一下,这个小算法为了保护程序中的中文被恶意修改,把代码贴出来大家看看两个参数,第一个参数为加密的中文字符串,第二个为一个int类型的数值,算法中要根据这个数值去解密,类似KEY,但是简化了而已,高手帮忙看看下,另外给个例子,例如:"笹"解密就可以得到"提示"这中文privatestringa(stringarg