数字转换为中文的类。(今晚的无聊之作)

中文|转换

<?php
// 诸海加
// 2000-7-19

class ChineseNumber
{
    var $basical=array(0=>"零","一","二","三","四","五","六","七","八","九");
    //var $basical=array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
    var $advanced=array(1=>"十","百","千");
    //var $advanced=array(1=>"拾","佰","仟");
    var $top=array(1=>"万","亿");

    var $level;            // 以4位为一级

    // 先实现万一下的数的转换
    function ParseNumber($number)
    {
        if ($number>999999999999)        // 只能处理到千亿。
            return "数字太大,无法处理。抱歉!";
        if ($number==0)
            return "零";

        for($this->level=0;$number>0.0001;$this->level++,$number=floor($number / 10000))
        {
            // 对于中文来说,应该是4位为一组。
            // 四个变量分别对应 个、十、百、千 位。
            $n1=substr($number,-1,1);
            if($number>9)
                $n2=substr($number,-2,1);
            else
                $n2=0;
            if($number>99)
                $n3=substr($number,-3,1);
            else
                $n3=0;
            if($number>999)
                $n4=substr($number,-4,1);
            else
                $n4=0;

            if($n4)
                $parsed[$this->level].=$this->basical[$n4].$this->advanced[3];
            else
                if(($number/10000)>=1)        // 千位为0,数值大于9999的情况
                    $parsed[$this->level].="零";
            if($n3)
                $parsed[$this->level].=$this->basical[$n3].$this->advanced[2];
            else
                if(!ereg("零$",$parsed[$this->level]) && ($number / 1000)>=1)    // 不出现连续两个“零”的情况
                    $parsed[$this->level].="零";
            if($n2)
                $parsed[$this->level].=$this->basical[$n2].$this->advanced[1];
            else
                if(!ereg("零$",$parsed[$this->level]) && ($number / 100)>=1)    // 不出现连续两个“零”的情况
                    $parsed[$this->level].="零";
            if($n1)
                $parsed[$this->level].=$this->basical[$n1];
        }
        for($this->level-=1;$this->level>=0;$this->level--)
        {
            $result.=$parsed[$this->level].$this->top[$this->level];
        }

        if(ereg("零$",$result))
            $result=substr($result,0,strlen($result)-2);

        return $result;
        
    }
};

$c=new ChineseNumber();
echo $c->ParseNumber(123456789012);

?>

时间: 2024-11-02 21:57:35

数字转换为中文的类。(今晚的无聊之作)的相关文章

用金山wps轻松将数字转换为中文大写格式

  在今天的金山wps教程中,我们需要学习的是将数字转换为中文大写格式的方法.这一方法,常常用于人民币统计的时候使用.那么,怎么才能做到简单.轻松的将数字转换为中文大写格式呢?小编就以金山WPS2013表格这款办公软件为例子给大家分享一下哦! 将表示金额的阿拉伯数字转换为中文大写形式: 中文大写 把鼠标移动到要设置为中文大写的单元格上,,点击格式菜单的单元格. 在弹出的单元格格式对话框中,在数字一栏中选择特殊,然后在右边类型栏选择人名币大写,确定即可.将身份证号码.手机号码转换为中文大写形式:

WPS2013表格中的数字转换为中文大写

  将表示金额的阿拉伯数字转换为中文大写形式: 把鼠标移动到要设置为中文大写的单元格上,,点击格式菜单的单元格. 在弹出的单元格格式对话框中,在数字一栏中选择特殊,然后在右边类型栏选择人名币大写,确定即可.将身份证号码.手机号码转换为中文大写形式: 选中设置区域,点击格式菜单中的单元格.在数字选项中的分类一栏,选择文本,点击确定.输入身份证号码.手机号码即可.

Excel数字转换为中文大写

Excel中我们在单元格输入了阿拉伯数字之后,比如"1234567890",忽然想起应该将它改成中文的大写格式,这时怎么办?删掉此内容重新一个字一个字地输入"壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾"?显然太麻烦了.假若并不是一个数字,而是很长的一列单元格,那我们还不麻烦死? 不过别担心,在Excel中这不是个难题,至少有以下的两种方法可供您选择: 一.单元格格式法 选中那些数字所在的单元格,点击右键,在弹出菜单中选择"设置单元格格式"命令,打开&q

请求GRIDVIEW将数字转换为中文显示

问题描述 如数据库中:option102030显示的时候显示为:一般,好,非常好 解决方案 解决方案二:protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){if(e.Row.Cells[3].Text=="10"){e.Row.Cells[3].Text="一般";}elseif(e.

一个将阿拉伯数字转换为中文数字近似读法的程序

    偶尔突发奇想,写了一个将阿拉伯数字转换为中文数字近似值的程序: #include <stdlib.h> #include <stdio.h> #include <limits.h> #include <string.h> #include <stdbool.h> #include <windows.h> const char *ChineseNum[] = {"零","一","

新手问题关于中文字符比较方法(输入数字日期,转换为中文大写日期)

问题描述 输入数字日期,转换为中文大写日期例输入2014年1月1日转换为贰零壹肆年壹月壹日为什么我的代码在比较中文字没有效果?如何比对中文字?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1{classClass2{publicstaticvoidMain(string[]args){char[]index={'零','壹','贰',

C#2.0纯数学方法递归实现货币数字转换中文

递归|货币|中文|转换 最近由于项目的原因,需要写一个货币数字转换中文的算法,先在网了找了一下,结果发现无一列外都是用(Replace)替换的方式来实现的,所以想写个另外的算法:因为本人是学数学出身的,所以用纯数学的方法实现. 注意:本文中的算法支持小于1023 (也就是9999亿兆)货币数字转化. 货币中文说明: 在说明代码之前,首先让我们回顾一下货币的读法. 10020002.23  读为 壹仟零贰万零贰元贰角叁分 1020         读为 壹仟零贰拾元整. 100000      

php封装好的人民币数值转中文大写类_php实例

php封装好的人民币数值转中文大写类 class Num2RmbClass{ /** * 人民币数值转中文大写 * @author SunsCheung * @time 2015.11.11 * @param string $number 数值 默认为0 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" * @param bool $is_round 是否对小数进行四舍五入 * @param bool $is_extra

JavaScript将数字转换为大写金额函数

例子1 目中用到的,用JavaScript将数字转换为大写金额,分享出来给大家 var digitUppercase = function(n) {     var fraction = ['角', '分'];     var digit = [         '零', '壹', '贰', '叁', '肆',         '伍', '陆', '柒', '捌', '玖'     ];     var unit = [         ['元', '万', '亿'],         ['',