`
dh189
  • 浏览: 135291 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

java人民币小写转换大写

    博客分类:
  • java
阅读更多
/**
* <p>Title: Money</p>
* <p>Description:
*   类名:Money
*   函数:String PositiveIntegerToHanStr(String NumStr)   负责把小数点前面的数转换为大写中文
*   函数:?String NumToRMBStr(double val)   负责把输入的double型的数转换为大写中文
*   注意java程序转换的范围是:小数点前面15位(已测试通过
* <p>Company: </p>
* @version 1.0
*/
import java.lang.Math;
public class MoneyUtil {
    // 调试时用main函数
    public static void main(String args[]) {
        System.out.println(toRMB(5000.08));
    }
    static String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
    static String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟",
            "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };
    static String PositiveIntegerToHanStr(String NumStr) { // 输入字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零
        String RMBStr = "";
        boolean lastzero = false;
        boolean hasvalue = false; // 亿、万进位前有数值标记
        int len, n;
        len = NumStr.length();
        if (len > 15) {
            return "数值过大!";
        }
        for (int i = len - 1; i >= 0; i--) {
            if (NumStr.charAt(len - i - 1) == ' ') {
                continue;
            }
            n = NumStr.charAt(len - i - 1) - '0';
            if (n < 0 || n > 9) {
                return "输入含非数字字符!";
            }
            if (n != 0) {
                if (lastzero) {
                    RMBStr += HanDigiStr[0]; // 若干零后若跟非零值,只显示一个零
                    // 除了亿万前的零不带到后面
                    // if( !( n==1 && (i%4)==1 && (lastzero || i==len-1) ) ) // 如十进位前有零也不发壹音用此行
                }
                if (!(n == 1 && (i % 4) == 1 && i == len - 1)) { // 十进位处于第一位不发壹音
                    RMBStr += HanDigiStr[n];
                }
                RMBStr += HanDiviStr; // 非零值后加进位,个位为空
                hasvalue = true; // 置万进位前有值标记
            } else {
                if ((i % 8) == 0 || ((i % 8) == 4 && hasvalue)) { // 亿万之间必须有非零值方显示万
                    RMBStr += HanDiviStr; // “亿”或“万”
                }
            }
            if (i % 8 == 0) {
                hasvalue = false; // 万进位前有值标记逢亿复位
            }
            lastzero = (n == 0) && (i % 4 != 0);
        }
        if (RMBStr.length() == 0) {
            return HanDigiStr[0]; // 输入空字符或"0",返回"零"
        }
        return RMBStr;
    }
    public static String toRMB(double val) {
        String SignStr = "";
        String TailStr = "";
        long fraction, integer;
        int jiao, fen;
        if (val < 0) {
            val = -val;
            SignStr = "负";
        }
        if (val > 99999999999999.999 || val < -99999999999999.999) {
            return "数值位数过大!";
        }
        // 四舍五入到分
        long temp = Math.round(val * 100);
        integer = temp / 100;
        fraction = temp % 100;
        jiao = (int) fraction / 10;
        fen = (int) fraction % 10;
        if (jiao == 0 && fen == 0) {
            TailStr = "整";
        } else {
            TailStr = HanDigiStr[jiao];
            if (jiao != 0) {
                TailStr += "角";
            }
            if (integer == 0 && jiao == 0) { // 零元后不写零几分
                TailStr = "";
            }
            if (fen != 0) {
                TailStr += HanDigiStr[fen] + "分";
            }
        }
        // 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分”
        // if( !integer ) return SignStr+TailStr;
        return SignStr + PositiveIntegerToHanStr(String.valueOf(integer)) + "元" + TailStr;
    }
}
分享到:
评论

相关推荐

    人民币小写金额转大写金额(java版)

    ### 人民币小写金额转大写金额(Java版) #### 概述 本文将详细介绍一个Java程序,该程序用于将小写的人民币金额转换为大写形式。此转换主要用于财务、会计和其他正式场合,在这些场合中,大写金额是标准且必须的...

    java钱币小写转换大写

    在Java编程中,将钱币小写金额转换为大写金额是一项常见的需求,特别是在财务系统或者电商平台上,为了符合规范和避免误解,金额通常会以大写形式展示。本知识点主要探讨如何利用Java实现这一功能。 首先,我们需要...

    JS实现人民币小写转大写

    在JavaScript编程中,有时我们需要将人民币的数字金额(小写)转换为中文的大写形式,以便于财务报表或发票的规范书写。这个过程涉及到字符映射、数字处理以及字符串操作等多个知识点。以下是对这个主题的详细说明:...

    Java方法小写转换大写人民币

    根据给定的文件信息,我们可以总结出以下有关“Java方法小写转换大写人民币”的相关知识点: ### 一、背景介绍 在财务处理、银行系统等业务场景中,经常需要将数字金额转换为中文大写形式,特别是对于精确度较高的...

    人民币小写转大写 java

    这是我写的人民币小写转大写的文档,刚刚学java,希望大家指教。

    java swt人民币小写转换大写

    用swt弄的,必须有jre,实验了次脱离jre,把jre加入文件夹中,然后批处理加载,但没...对于记不住人民币大写的朋友可以节省查找时间。源代码都在里面。其中里面有些错误输入的判断没有做完全,有兴趣可以自己完善完善。

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

    "人民币小写转大写的程序"就是一个这样的解决方案,用于将诸如“123456.78”这样的金额转换成对应的汉字表示,如“壹拾贰万叁仟肆佰伍拾陆元柒角捌分”。 这个程序通常会涉及以下知识点: 1. **字符串处理**:程序...

    Java编程-金额小写转大写

    在Java编程中,将金额小写转换为大写是一个常见的需求,特别是在财务系统或银行应用中,为了符合规范,金额通常需要以大写形式展示,防止因大小写混淆导致的错误。本文将深入探讨如何实现这个功能,并通过提供的`...

    JAVA大写金额转化为小写金额

    用JAVA书写的一个大写金额转化为小写金额的类

    java:人民币小写转大写程序

    可以实现将 10002 转换成壹万零貮元整 10100021转换成壹千零壹拾万零貮拾壹元整 110.00 转换成壹佰壹拾元整 10.01 转换成壹拾元零壹分

    人民币金额小写转换大写

    总的来说,“人民币金额小写转换大写”的实现涉及了字符串操作、字符映射、循环和条件判断等基本编程概念,是Java编程中的一个实用技巧,尤其在处理财务数据时非常有用。通过阅读和理解`TransformMoney.java`的代码...

    钱的小写转大写--Java版

    钱的小写转大写 1000--壹仟圆整 10.01--壹拾圆零壹分 10001000--壹仟万零壹仟圆整

    人民币小写转大写JAVA程序.doc

    人民币小写转大写JAVA程序 本文档主要讲解了使用JAVA程序将人民币小写转换为大写的实现方法。该程序使用了BigDecimal类型来处理金额,并使用String数组来存储中文数字和单位。 知识点1:BigDecimal类型在JAVA中的...

    人民币小写转大写(Java 实现)

    * 将double形式的字符串(有两位小数或无小数)转换成人民币的大写格式 * @param doubleStr * @return String * @throws Exception */ public static String doChangeRMB(String doubleStr)throws ...

    人民币小写转大写(java)

    自己写的一个人名币小写换大写的工具类,这里为零的情况可以自己随意填补,比如想填补成空格或者一把叉等等都可以(没做测试,可能有bug,恳请各位能指正其中的不足)

    jsp页面人民币小写转大写

    "jsp页面人民币小写转大写"这个话题就是其中之一。在处理金融数据时,为了保证准确性和规范性,通常会将金额从小写的阿拉伯数字转换为大写的汉字数字,这在财务报表、发票等正式文档中尤其常见。在JSP(JavaServer ...

    小写金额转换大写金额

    小写金额转换大写金额,小写金额转换大写金额.

    基于java的人民币大写的转换

    在Java编程语言中,将人民币小写金额转换为大写是一项常见的需求,特别是在财务系统或者银行系统的开发中。人民币大写转换主要是为了满足会计规范,确保财务数据的准确性和规范性。下面,我们将深入探讨如何利用Java...

    js金额小写转大写脚本

    "js金额小写转大写脚本"指的是JavaScript编程语言中用于将小写的货币金额(阿拉伯数字)转换为大写的汉字数字的代码片段。这样的脚本有助于提高财务报表的可读性和规范性,因为在中国,正式的财务文档通常要求金额以...

    小写数字转换大写数字

    在IT领域,尤其是在财务软件开发、数据处理以及会计系统中,将小写数字转换成大写数字是一项常见的需求。这通常涉及到将阿拉伯数字(小写)转化为汉字大写,以便于财务报告、发票和正式文档的清晰性和准确性。在中文...

Global site tag (gtag.js) - Google Analytics