`
814694604
  • 浏览: 771 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

数字转换为大写人民币计数

阅读更多

/**
 * 数字转换为大写人民币计数
 * @author 王代军
 * @since Dec 16,2011
 */
public class Num2Rmb
{
    private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , 
        "伍" , "陆" , "柒" , "捌" , "玖"};
    private String[] unitArr = {"拾","百","千","万"};

    /**
     * 把一个四位的数字字符串变成汉字字符串
     * @param numStr 需要被转换的四位的数字字符串
     * @return 四位的数字字符串被转换成的汉字字符串。
     */
    private String toHanStr(String numStr)
    {
        String result = "";
        int numLen = numStr.length();
        //依次遍历数字字符串的每一位数字
        for (int i = 0 ; i < numLen ; i++ )
        {
            //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
            //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
            int num = numStr.charAt(i) - 48;
            //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
            if ( i != numLen - 1 && num != 0)
            {
                result += hanArr[num] + unitArr[numLen - 2 - i];
            }
            //否则不要添加单位
            else
            {
                
                //上一个数是否为“零”,不为“零”时就添加
                if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
                    continue;
                result += hanArr[num];
            }
        }
        //只有个位数,直接返回
        if(result.length()==1)
            return result;
        
        int index=result.length()-1;
        while(result.charAt(index)=='零'){
            index--;
        }
        if(index!=result.length()-1)
            return result.substring(0,index+1);
        else {
            return result;
        }
    }
    /**
     * 把一个输入的数字字符串变成汉字字符串
     * @param numStr 需要被转换得到数字字符串
     * @return 数字字符串被转换成的汉字RMB字符串。
     */
    private String toRmbStr(String numStr){
        //获取字符串长度
        int numLen = numStr.length();
        //判断长度小于4(一万以内~0-9999) 调用toHanStr();
        if(numLen<=4){
            return toHanStr(numStr);
        }
        //4<长度<=8 (一亿以内 1000-99999999)
        else if(numLen>4&&numLen<=8){
            String[] subArr={numStr.substring(0, numLen-4),numStr.substring(numLen-4, numLen)};
            return toHanStr(subArr[0])+"万"+toHanStr(subArr[1]);
        }
        //8<长度<=10 (百亿以内 一亿-9999999999)
        else if(numLen>8&&numLen<=10){
            String[] subArr={numStr.substring(0,numLen-8),numStr.substring(numLen-8,numLen-4),numStr.substring(numLen-4,numLen)};
            return toHanStr(subArr[0])+"亿"+toHanStr(subArr[1])+"万"+toHanStr(subArr[2]);
        }
        else return "输入有误!";    
    }          
    public static void main(String[] args) 
    {        
        Num2Rmb nr = new Num2Rmb();
        System.out.println("只支持整数(0~99亿)");
        //测试把一个四位的数字字符串变成汉字字符串
        System.out.println(nr.toRmbStr("1"));
        System.out.println(nr.toRmbStr("10"));
        System.out.println(nr.toRmbStr("15"));
        System.out.println(nr.toRmbStr("110"));
        System.out.println(nr.toRmbStr("123"));
        System.out.println(nr.toRmbStr("105"));
        System.out.println(nr.toRmbStr("1000"));
        System.out.println(nr.toRmbStr("1101"));
        System.out.println(nr.toRmbStr("1110"));
        System.out.println(nr.toRmbStr("1005"));
        System.out.println(nr.toRmbStr("101105"));
        System.out.println(nr.toRmbStr("1011109"));
        System.out.println(nr.toRmbStr("9999999999"));
    }
}




分享到:
评论

相关推荐

    数字转大写货币函数

    在IT领域,尤其是在财务软件开发或者数据分析应用中,将数字转换为大写货币格式是一项常见的需求。这通常涉及到编程语言中的字符串处理、数值计算以及格式化输出等技术。本篇文章将详细探讨如何实现一个数字转大写...

    java实现将数字转换成人民币大写

    【Java实现将数字转换成人民币大写】的代码主要涉及了将数字转化为中文大写汉字的逻辑,这对于财务系统和报表生成来说是非常重要的功能。在Java中,这个过程可以通过自定义类来实现,例如创建一个名为`Rmb`的类。...

    人民币小写转大写的程序.rar

    2. **条件判断**:为了将数字转换为相应的汉字,程序需要进行一系列的条件判断,例如判断个、十、百、千、万、亿等位上的数字,并返回对应的汉字。 3. **数字与汉字的映射**:编程时需要建立一个数字到汉字的映射表...

    数值转人民币(含vb6源码)

    在IT领域,数值转换是一个常见的任务,特别是在财务和会计软件中。这个名为“数值转人民币”的...同时,对于非开发者来说,这个工具提供了一种方便的方式来快速准确地将数字转换为符合财务规范的中文大写人民币金额。

    人民币大写的书写方法和例子示范.pdf

    - 书写时必须严格按照数字的读法转换成大写,避免因数字错误导致经济损失。 - 字迹要清晰,避免因笔误或多写、少写零而导致的误解。 掌握正确的人民币大写书写规范,对于从事金融、财务工作的人来说,是基础且必要...

    java实现人民币大小写转换方法分享

    然后,将数字转换为汉字并添加到结果字符串。 7. **特殊处理**:为了处理连续的零,定义了一个标志变量`zero`和一个计数变量`zeroSerNum`。当遇到非零数字时,需要检查之前连续的零,根据规则添加相应的单位。 8. ...

    WPS表格怎样设置文字格式.docx

    #### 一、将阿拉伯数字转换为中文大写形式 在处理财务数据时,经常需要将表示金额的阿拉伯数字转换为中文大写形式,以便于正式文档的编制。在WPS表格中,可以通过以下步骤快速实现这一功能: 1. **定位单元格**: ...

    大小金额转化

    接着,它将数字转换为字符串,并确保小数点后有两位数,即使它们都是0。之后,它遍历每个数字字符,将其转换为相应的汉字表示,并添加正确的单位。特别注意处理连续的零,避免重复添加“零”。最后,如果结果以“零...

    北京邮电大学-计算机实习-实验报告.docx

    本次实习报告主要涵盖了两个计算机相关项目:人民币金额大写转换器和文本字符频率统计。这两个项目均基于C#编程语言,利用Visual Studio 2017作为开发工具,设计了Windows窗体应用程序。 **一、人民币金额大写转换...

    大小写金额转换-源码

    {-------------------------------------------------------------------- 货币数字转为为中文大写的组件 Version 1.31 by SNAKEJIAO 2003.4.13简介: 可以转化整数,浮点数,及时间日期型数据 配合别名列表可以进行...

    C# 大小写转换(金额)实例代码

    这些字符串用于将阿拉伯数字转换为汉字。 4. **初始化变量**: 初始化了几个变量,包括`str3`,用于保存原始金额字符串的某一位;`str4`,保存金额乘以100后的字符串形式;`str5`,最终的大写金额结果;以及`i`、`...

    Excel百宝箱9.0无限制破解版.rar

    【小写金额转大写】:将小写金额批量转换成大写 【大写金额转小写】:将大写金额批量转换成小写 【区域数据加密】:对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。 【简体转繁体】:将简体字批量...

    Excel百宝箱 9.0 破解版 批量导入图片等200种功能

    【小写金额转大写】将小写金额批量转换成大写 【大写金额转小写】将大写金额批量转换成小写 【区域数据加密】对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。第二次执行时可以恢复数据 【简体转繁体】...

    Exce百宝箱——2012版本.rar

    【小写金额转大写】:将小写金额批量转换成大写 【大写金额转小写】:将大写金额批量转换成小写 【区域数据加密】:对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。 【简体转繁体】:将简体字批量转换...

    VB程序设计的常用算法4.docx

    在循环中,用`idec mod ibase`获取余数,如果`idec`大于等于10,则使用ASCII码进行字符转换,否则直接保留数字。 其次,字符串处理算法包括简单的加密和解密。加密是通过对每个字符的ASCII码加上一个固定值`k`,...

    Excel百宝箱8.0

    【生成系统图标】【获取内置命令】【修复Excel】【破解VBA密码】【删除空单元格】【转置选区】【按列倒置】【按列倒置】【字母大小写转换】【小写金额转大写】【大写金额转小写】【区域数据加密】【多区域复制】【按...

    EXCEL百宝箱8.0终极版

    【小写金额转大写】:将小写金额批量转换成大写 【大写金额转小写】:将大写金额批量转换成小写 【区域数据加密】:对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。 【简体转繁体】:将简体字批量转换...

    python.docx

    print(c.upper()) # 输出转换为大写字母后的字符串 print("{:&gt;20}".format(c)) # 输出右对齐且填充空格至长度为20的字符串 print("{:*^20}".format(c)) # 输出居中对齐且用星号填充至长度为20的字符串 print("{}...

    程序员二进制计算器 v1.36

    用%x时,字母abcdef输出为小写,用%X时,字母abcdef输出为大写。 %x 31 = 0x1f %X 31 = 0X1F (5)输出前的类型转换 对于浮点型值,用以上4种格式时,会先取整,再输出,因此它们可起到对结果取整的作用。 %d...

    Excel新增工具集

    2、人民币大小写等常用数据转换:可将人民币小写转换成大写、能四舍五入四舍五入、甩去零头取整、提取甩去的零头、工资纳税计算、分数或名次转等次、汉字转拼音、英语单词首字母转大写等。由于采用在单元格输入公式...

Global site tag (gtag.js) - Google Analytics