`
jaychang
  • 浏览: 731499 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

数字金额转中文大写金额

 
阅读更多
 /**
     * 用来将数字金额转化成中文大写的金额
     * 
     * @param value
     * @return
     */
    public static String changeToBig(double value) {
        char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示
        char[] vunit = { '万', '亿' }; // 段名表示
        char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示

        DecimalFormat df = new DecimalFormat("##0");

        String valStr = df.format(value * 100); // 转化成字符串

        if (valStr.length() == 1)
            valStr = "0" + valStr;
        String head = valStr.substring(0, valStr.length() - 2); // 取整数部分
        String rail = valStr.substring(valStr.length() - 2); // 取小数部分

        String prefix = ""; // 整数部分转化的结果
        String suffix = ""; // 小数部分转化的结果
        // 处理小数点后面的数
        if (rail.equals("00")) { // 如果小数部分为0
            suffix = "整";
        } else {
            if (rail.charAt(0) == '0')
                suffix = digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来
            else
                suffix = digit[rail.charAt(0) - '0'] + "角"
                        + digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来
        }
        // 处理小数点前面的数
        char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组
        char zero = '0'; // 标志'0'表示出现过0
        byte zeroSerNum = 0; // 连续出现0的次数
        for (int i = 0; i < chDig.length; i++) { // 循环处理每个数字
            int idx = (chDig.length - i - 1) % 4; // 取段内位置
            int vidx = (chDig.length - i - 1) / 4; // 取段位置
            if (chDig[i] == '0') { // 如果当前字符是0
                zeroSerNum++; // 连续0次数递增
                if (zero == '0') { // 标志
                    zero = digit[0];
                }
                if (idx == 0 && vidx > 0 && zeroSerNum < 4) {
                    prefix += vunit[vidx - 1];
                    zero = '0';
                }
                continue;
            }
            zeroSerNum = 0; // 连续0次数清零
            if (zero != '0') { // 如果标志不为0,则加上,例如万,亿什么的
                prefix += zero;
                zero = '0';
            }
            prefix += digit[chDig[i] - '0']; // 转化该数字表示
            if (idx > 0)
                prefix += hunit[idx - 1];
            if (idx == 0 && vidx > 0) {
                prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿
            }
        }

        if (prefix.length() > 0)
            prefix += '圆'; // 如果整数部分存在,则有圆的字样
        return prefix + suffix; // 返回正确表示
    }
 
分享到:
评论
1 楼 bardo 2011-04-17  
建议看看这一个

http://bardo.iteye.com/blog/983559

相关推荐

    oracle 数字金额转为汉字大写

    在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...

    水晶报表数字金额转中文大写

    水晶报表数字金额转中文大写,用于水晶报表中将数字金额转换为中文大写的金额

    将数字金额转换为中文大写金额

    将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额

    LUA 实现数字金额转汉字大写

    LUA 实现数字金额转汉字大写,最近,项目需要在前端实现,数字金额转汉字大写,测试不多,可能存在问题,请多多指教 另外,此段代码中附赠有以下两个字符串函数,也可以单独使用 myremove(str , chr) split(str, chr...

    java 正则数字金额转换为大写

    输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...

    mysql函数,将数字金额转成人民币大写

    在MySQL数据库中,有时我们需要将数字金额转换成人民币的大写形式,这在财务报表或会计系统中非常常见。为了实现这一需求,我们可以自定义一个函数或者利用现有的字符串处理函数。以下是一个关于如何在MySQL中实现这...

    将数字转为中文金额的大写方式(Java版)

    将数字转为中文金额的大写方式(Java版) 博文链接:https://lovinchan.iteye.com/blog/202768

    java将数字转换成大写字母

    Java 中实现数字金额到中文大写字符的转换 Java 中实现数字金额到中文大写字符的转换是指将阿拉伯数字转换成中文大写的过程。本文将详细介绍 Java 实现数字金额到中文大写字符的转换的知识点。 知识点一: 数字...

    Android中数字转中文,金额转大写

    本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转大写,并且会涉及到口语化的转换。 首先,数字转中文主要是将阿拉伯数字(如1、2、3等)转换成中文数字(如一、二、三等)。在Java或...

    JAVA实现阿拉伯数字金额转汉语大写.doc

    "JAVA实现阿拉伯数字金额转汉语大写" JAVA实现阿拉伯数字金额转汉语大写是指使用JAVA语言将阿拉伯数字金额转换为汉语大写格式的过程。该过程主要涉及到数字金额的处理和汉语大写格式的转换。 在该过程中,需要定义...

    数字金额转英文大写金额(包括小数)

    最好放在公共方法里,以便调用,定义String 类型接受返回的金额,调用参数为需要传入的金额

    SQL数字转金额大写函数

    sqlserver数字转金额大写,输入数字返回汉字大写

    python金额数字转大写代码

    将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串

    FastReport小写金额转大写

    此外,代码中使用了一些非标准的汉字字符,如“Է”,“Ԫ”,“ʰ”,“Ǫ”,这些并不是常规的大写金额转换中会用到的字符,因此在实际应用中需要修正。 ### 总结 将小写金额转换为大写在财务系统和报表生成中...

    SAP ABAP数字金额转中文大写源代码

    ### SAP ABAP 数字金额转中文大写源代码解析及应用 #### 一、背景介绍 在财务系统中,将数字金额转换成中文大写格式是常见需求之一,尤其是在发票开具、合同签订等正式文件中。SAP作为全球领先的企业管理软件之一,...

    阿拉伯数字金额转换为大写数字金额

    这样,我们就可以通过调用JavaBean的`toChinese()`方法,将任何阿拉伯数字金额转换为大写汉字表示。 在实际应用中,这个功能可能需要处理更复杂的情况,比如负数、零、以及千位分隔符等。可以进一步扩展`...

    金额阿拉伯数字转换中文大写(全)

    在IT领域,尤其是在财务软件开发或数据处理中,经常需要将阿拉伯数字金额转换为中文大写,以便在财务报表、发票或合同中清晰准确地表示金额。这是因为中文大写数字在金融交易中能减少因书写错误导致的混淆,增强财务...

    java实现数字转换人民币中文大写工具

    Java 实现数字转换人民币中文大写工具 Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换...

    小写金额转换为大写金额

    而大写金额则是为了防止篡改和提高凭证的正式性,常用于支票、合同等正式文档中,例如“壹拾贰万叁仟肆佰伍拾陆元柒角捌分”。在编程中,我们需要编写函数或程序来实现小写金额到大写金额的转换。这个过程涉及到数字...

    将阿拉伯数字转换为金额的汉字大写

    当我们涉及到金融交易或者会计记录时,金额通常需要以汉字大写的形式表示,以避免数字篡改和提高准确性。本文将深入探讨如何使用Java来实现阿拉伯数字到金额汉字大写的转换。 首先,我们需要了解金额汉字大写的基本...

Global site tag (gtag.js) - Google Analytics