`

java 金额转中文大写

    博客分类:
  • JAVA
阅读更多

public class ChinaNumber
{

 private static String[] CH = { "", "", "拾", "佰", "仟", "万", "", "", "", "亿", "", "", "", "兆" };

 private static String[] CHS_NUMBER={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

 /**
  * 传入数字金额字符串,返回数字金额对应的中文大字与读法
  *
  * @param money
  *            金额字符串
  * @return 金额中文大写
  */

 public static String getCHSNumber(String money)

 {

     String chs = "";

     String tmp_int = money.substring(0, money.indexOf("."));

     String tmp_down = money.substring(money.indexOf(".") + 1, money.length());

     char[] tmp_int_char = tmp_int.toCharArray();

     String[] tmp_chs = new String[tmp_int_char.length];

     int tab = 0;

     for (int i = 0; i < tmp_int_char.length; i++)

     {

         tab = tmp_int_char.length - i - 1;

         if (tmp_int_char.length <= 5)

         {

             tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];

             if (!tmp_chs[tab].equals("零"))

             {
                 // tmp_int_char.length - i 为数字所在的位数
                 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];
             } else

             {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零

                 if (!chs.endsWith("零") && tab != 0)
                 {
                     chs = chs + tmp_chs[tab];
                 } else if (chs.endsWith("零") && tab == 0)

                 {
                     chs = chs.substring(0, chs.length() - 1);
                 }

             }

         }



         //  如果数字的位数大于5和小于9时

         if (tmp_int_char.length > 5 && tmp_int_char.length < 9)

         {

             tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];

             // 如:123,1234分成两部分

             // 第1部分123:万以上亿以下

             if (tab >= 4)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))
                 {
                     chs = chs + tmp_chs[tab] + CH[tab - 3];

                     //  当第1部分算完时在加上"万"

                     if (tab == 4)

                     {

                         chs = chs + "万";

                     }



                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))

                     {
                         chs = chs + tmp_chs[tab];
                     }

                     // 当第1部分算完时
                     if (tab == 4)

                     {
                         //  先判断字符串有没有零
                         //  如果有零时就把零去掉再加上"万"
                         if (chs.endsWith("零"))

                         {
                             chs = chs.substring(0, chs.length() - 1);
                             chs = chs + "万";
                         } else
                         {
                             //  如果没有零就直接加上"万"
                             chs = chs + "万";
                         }
                     }
                 }
             }

             // 如:123,1234分成两部分
             // 第1部分1234:万以下
             if (tab < 4)
             {

                 if (!tmp_chs[tab].equals("零"))
                 {
                     // tmp_int_char.length - i 为数字所在的位数
                     chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];
                 } else
                 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零
                     if (!chs.endsWith("零") && tab != 0)
                     {
                         chs = chs + tmp_chs[tab];
                     }
                     if (chs.endsWith("零") && tab == 0)
                     {
                         chs = chs.substring(0, chs.length() - 1);
                     }
                 }
             }

         }

         //  如果数字的位数大于5和小于9时
         if (tmp_int_char.length >= 9 && tmp_int_char.length <= 12)
         {
             tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];
             if (tab >= 8 && tab < 12)
             {
                 // 当前数字不是大小零时
                 if (!tmp_chs[tab].equals("零"))
                 {
                     chs = chs + tmp_chs[tab] + CH[tab - 7];
                     //  当第1部分算完时在加上"万"
                     if (tab == 8)
                     {
                         chs = chs + "亿";
                     }
                 } else
                 {
                     // 当前数字为大小"零"时
                     // 判断前一次形成在字符串结尾有没有零
                     //  如果没有零就加上零
                     if (!chs.endsWith("零"))
                     {
                         chs = chs + tmp_chs[tab];
                     }
                     // 当第1部分算完时
                     if (tab == 8)

                     {

                         //  先判断字符串有没有零
                         //  如果有零时就把零去掉再加上"万"
                         if (chs.endsWith("零"))

                         {
                             chs = chs.substring(0, chs.length() - 1);

                             chs = chs + "亿";

                         } else

                         {

                             //  如果没有零就直接加上"万"

                             chs = chs + "亿";

                         }

                     }

                 }

             }

             // 如:123,1234分成两部分

             // 第1部分123:万以上亿以下

             if (tab >= 4 && tab < 8)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {

                     chs = chs + tmp_chs[tab] + CH[tab - 3];

                     //  当第1部分算完时在加上"万"

                     if (tab == 4)

                     {
                         chs = chs + "万";
                     }

                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))

                     {

                         chs = chs + tmp_chs[tab];
                     }

                     // 当第1部分算完时

                     if (tab == 4)

                     {

                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);



                             if (!chs.endsWith("亿"))

                                 chs = chs + "万";

                         } else

                         {

                             //  如果没有零就直接加上"万"

                             if (!chs.endsWith("亿"))

                                 chs = chs + "万";
                         }

                     }

                 }

             }



             // 如:123,1234分成两部分

             // 第1部分1234:万以下

             if (tab < 4)

             {
                 if (!tmp_chs[tab].equals("零"))

                 {
                     // tmp_int_char.length - i 为数字所在的位数

                     chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];

                 } else

                 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零

                     if (!chs.endsWith("零") && tab != 0)

                     {

                         chs = chs + tmp_chs[tab];
                     }

                     if (chs.endsWith("零") && tab == 0)

                     {

                         chs = chs.substring(0, chs.length() - 1);

                     }

                 }

             }

         }



         //  如果数字的位数大于12和小于16时

         if (tmp_int_char.length > 12 && tmp_int_char.length <= 16)
         {

             tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];

             if (tab >= 12 && tab < 16)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {

                     chs = chs + tmp_chs[tab] + CH[tab - 11];
                     //  当第1部分算完时在加上"万"
                     if (tab == 12)
                     {

                         chs = chs + "兆";

                     }
                 } else

                 {

                     // 当前数字为大小"零"时
                     // 判断前一次形成在字符串结尾有没有零
                     //  如果没有零就加上零
                     if (!chs.endsWith("零"))

                     {

                         chs = chs + tmp_chs[tab];
                     }
                     // 当第1部分算完时
                     if (tab == 12)
                     {
                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);

                             chs = chs + "兆";

                         } else

                         {

                             //  如果没有零就直接加上"万"

                             chs = chs + "兆";

                         }

                     }

                 }

             }



             if (tab >= 8 && tab < 12)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {
                     chs = chs + tmp_chs[tab] + CH[tab - 7];
                     //  当第1部分算完时在加上"万"

                     if (tab == 8)

                     {

                         chs = chs + "亿";

                     }
                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))

                     {

                         chs = chs + tmp_chs[tab];
                     }
                     // 当第1部分算完时
                     if (tab == 8)

                     {

                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);

                             if (!chs.endsWith("兆"))

                                 chs = chs + "亿";

                         } else

                         {
                             //  如果没有零就直接加上"万"
                             if (!chs.endsWith("兆"))
                                 chs = chs + "亿";
                         }

                     }

                 }

             }

             // 如:123,1234分成两部分

             // 第1部分123:万以上亿以下

             if (tab >= 4 && tab < 8)
             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {
                     chs = chs + tmp_chs[tab] + CH[tab - 3];
                     //  当第1部分算完时在加上"万"

                     if (tab == 4)

                     {
                         chs = chs + "万";
                     }
                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))
                     {
                         chs = chs + tmp_chs[tab];
                     }

                     // 当第1部分算完时
                     if (tab == 4)

                     {

                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);

                             if (!chs.endsWith("亿"))

                                 if (!chs.endsWith("兆"))

                                     if (!chs.endsWith("兆"))

                                         chs = chs + "万";
                         } else

                         {
                             //  如果没有零就直接加上"万"

                             if (!chs.endsWith("亿"))

                                 if (!chs.endsWith("兆"))

                                     chs = chs + "万";
                         }

                     }

                 }

             }



             // 如:123,1234分成两部分

             // 第1部分1234:万以下

             if (tab < 4)

             {
                 if (!tmp_chs[tab].equals("零"))

                 {
                     // tmp_int_char.length - i 为数字所在的位数

                     chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];

                 } else

                 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零

                     if (!chs.endsWith("零") && tab != 0)

                     {

                         chs = chs + tmp_chs[tab];
                     }

                     if (chs.endsWith("零") && tab == 0)

                     {

                         chs = chs.substring(0, chs.length() - 1);

                     }

                 }

             }

         }



         //  如果数字的位数大于16

         if (tmp_int_char.length > 16)
         {

             tmp_chs[tab] = CHS_NUMBER[(int) Float.parseFloat(tmp_int_char[i] + ".0")];
             if (tab >= 12)

             {

                 chs = chs + tmp_chs[tab];

                 //  当第1部分算完时在加上"万"

                 if (tab == 12)

                 {

                     chs = chs + "兆";

                 }
             }



             if (tab >= 8 && tab < 12)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {

                     chs = chs + tmp_chs[tab] + CH[tab - 7];



                     //  当第1部分算完时在加上"万"

                     if (tab == 8)

                     {

                         chs = chs + "亿";

                     }



                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))

                     {

                         chs = chs + tmp_chs[tab];
                     }



                     // 当第1部分算完时



                     if (tab == 8)
                     {
                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);

                             if (!chs.endsWith("兆"))

                                 chs = chs + "亿";

                         } else

                         {

                             //  如果没有零就直接加上"万"

                             if (!chs.endsWith("兆"))

                                 chs = chs + "亿";

                         }

                     }

                 }

             }

             // 如:123,1234分成两部分

             // 第1部分123:万以上亿以下

             if (tab >= 4 && tab < 8)

             {

                 // 当前数字不是大小零时

                 if (!tmp_chs[tab].equals("零"))

                 {

                     chs = chs + tmp_chs[tab] + CH[tab - 3];



                     //  当第1部分算完时在加上"万"

                     if (tab == 4)

                     {

                         chs = chs + "万";
                     }

                 } else

                 {

                     // 当前数字为大小"零"时

                     // 判断前一次形成在字符串结尾有没有零

                     //  如果没有零就加上零

                     if (!chs.endsWith("零"))

                     {

                         chs = chs + tmp_chs[tab];

                     }

                     // 当第1部分算完时
                     if (tab == 4)

                     {

                         //  先判断字符串有没有零

                         //  如果有零时就把零去掉再加上"万"

                         if (chs.endsWith("零"))

                         {

                             chs = chs.substring(0, chs.length() - 1);
                             if (!chs.endsWith("兆"))
                                 if (!chs.endsWith("亿"))
                                     chs = chs + "万";
                         } else
                         {

                             //  如果没有零就直接加上"万"

                             if (!chs.endsWith("兆"))
                                 if (!chs.endsWith("亿"))
                                     chs = chs + "万";
                         }

                     }

                 }

             }



             // 如:123,1234分成两部分

             // 第1部分1234:万以下

             if (tab < 4)

             {
                 if (!tmp_chs[tab].equals("零"))

                 {
                     // tmp_int_char.length - i 为数字所在的位数

                     chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i];

                 } else

                 {// 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零

                     if (!chs.endsWith("零") && tab != 0)

                     {

                         chs = chs + tmp_chs[tab];
                     }
                     if (chs.endsWith("零") && tab == 0)
                     {
                         chs = chs.substring(0, chs.length() - 1);
                     }

                 }

             }

         }

     }



     if (tmp_down != null)

     {

         char[] tmp = tmp_down.toCharArray();
         if (tmp.length == 1)
         {
             if (tmp[0] != '0')

                 chs = chs + "元" + CHS_NUMBER[(int) Float.parseFloat(tmp[0] + ".0")] + "角整";
             else
                 chs = chs + "元整";

         } else

         {

             if (tmp[1] != '0' && tmp[0] != '0')

             {

                 chs = chs + "元" + CHS_NUMBER[(int) Float.parseFloat(tmp[0] + ".0")] + "角"

                         + CHS_NUMBER[(int) Float.parseFloat(tmp[1] + ".0")] + "分";

             } else if (tmp[1] != '0' && tmp[0] == '0')

             {

                 chs = chs + "元零" + CHS_NUMBER[(int) Float.parseFloat(tmp[1] + ".0")] + "分";

             }

         }

     } else

     {
         chs = chs + "元整";
     }

     return chs;

 }
 

 public static void main(String[] args)

 {

     String m = "6136347.42";

     System.out.println(ChinaNumber.getCHSNumber(m));

     m = "641295403.34";

     System.out.println(ChinaNumber.getCHSNumber(m));

 }

}
 
分享到:
评论

相关推荐

    java 类 金额转换成大写

    Java 类金额转换成大写 在 Java 编程语言中,金额转换成大写是非常有用的功能,特别是在财务、银行、电子商务等领域中。下面我们来详细介绍如何使用 Java 实现金额转换成大写的功能。 实例代码分析 首先,我们来...

    java将数字转换成大写字母

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

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

    在人事业务系统中,日期也可以用汉字大写表示,以便于更好地表达日期信息。 Java 实现数字转换人民币中文大写工具的代码实例如下: ```java public class Data2Zh { final static private String NUMBER[] = { "零...

    Java数字金额转大写

    将数字金额转换为大写汉字的java工具类,方便财务相关开发转换金额。

    java 实现 金额转成中文大写形式

    在Java编程中,将金额的阿拉伯数字转换为中文汉字大写是常见的财务处理需求,主要用于防止数字篡改,增加财务数据的安全性和准确性。这个过程通常称为金额数字化,它涉及到将小数点、整数和小数部分分别转换,并且...

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

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

    java金额转大写

    根据给定的文件信息,我们可以总结出以下有关“Java金额转大写”的知识点: ### 一、背景介绍 在财务处理、票据填写等场景中,经常需要将阿拉伯数字表示的金额转换为汉字大写形式。这不仅可以提高正式文档的专业性...

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

    本文将深入探讨如何使用Java来实现阿拉伯数字到金额汉字大写的转换。 首先,我们需要了解金额汉字大写的基本规则。在中国,金额的汉字大写有特定的规则,例如1到10的汉字大写分别是壹、贰、叁、肆、伍、陆、柒、捌...

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

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

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

    Java程序实现数字金额转为大写中文金额,是一项常见的编程任务,尤其在金融行业以及需要处理财务数据的软件中应用广泛。其核心功能是将阿拉伯数字表示的金额转换成中文大写形式,以满足财务凭证、支票、合同等文档中...

    java钱币小写转换大写

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

    JAVA实现金额转换大写

    通过这样的Java实现,我们能够轻松地将金额数字转换为大写汉字,满足各种财务报表和数据处理的需求。当然,实际的项目中还可能需要考虑性能优化,特别是对于大数据量的转换,可以考虑使用流式处理或者多线程等技术来...

    Java人民币金额数字转换成大写

    在 Java 中,将人民币金额数字转换成大写需要使用 HashMap 来存储中文数字和人民币金额的对应关系。例如,数字 1 对应中文数字 "壹",数字 2 对应中文数字 "贰",以此类推。 在 SimpleMoneyFormat 类中,我们首先...

    Java编程-金额小写转大写

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

    小写金额转大写

    在IT行业中,编程语言Java是广泛使用的,尤其在金融、财务等领域,经常需要将小写的金额转换为大写的汉字表示,以满足规范的财务报告需求。这个“小写金额转大写”的主题就涉及到这样的一个功能实现。在这个压缩包...

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

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

    使用java将人民币金额转换成大写并使用自定义标签显示到页面

    在中文环境中,人民币的金额通常使用大写表示,以便于财务报表的规范性和防止篡改。本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`...

    转换成中文大写金额

    在IT行业中,尤其是在财务软件开发或者金融系统的编程中,将数字金额转换为中文大写是一种常见的需求。这有助于避免因数字书写错误导致的财务纠纷,因为中文大写的金额更不容易被篡改。在这个场景中,"MoneyFormat" ...

    java金额转大小写很详细

    此程序的主要目的是为了在财务、会计等场景下能够准确地将数字形式的金额转换成汉字大写形式,这对于正式文件如发票、合同等非常重要。 ### 主要知识点 #### 1. **正则表达式的应用** - **`AMOUNT_PATTERN`**:...

    Ireport实现金额大写(自己实现的)

    本文将详细介绍如何使用Ireport内置的Scriptlet功能实现将金额转换为大写的汉字表示,这对于财务报表的制作尤为重要,因为在中国,金额通常需要以中文大写的形式出现,以增加数据的准确性,防止篡改。 首先,我们要...

Global site tag (gtag.js) - Google Analytics