首页 阿拉伯数字转换成中文大写

阿拉伯数字转换成中文大写

举报
开通vip

阿拉伯数字转换成中文大写package com.gwt.client.test; //caiquanhui-20120105 public class NumberToChinese {     private final static String[] a_strNumber = { "零", "壹", "贰", "叁", "肆",             "伍", "陆", "柒", "捌", "玖" };     private final static String[] a_strModify = { "", "拾", "佰", ...

阿拉伯数字转换成中文大写
package com.gwt.client.test; //caiquanhui-20120105 public class NumberToChinese {     private final static String[] a_strNumber = { "零", "壹", "贰", "叁", "肆",             "伍", "陆", "柒", "捌", "玖" };     private final static String[] a_strModify = { "", "拾", "佰", "仟", "万",             "拾", "佰", "仟", "亿", "拾", "佰", "仟" };     private final static String strSign = "负 ";// 实际上”+“号永远都不可能出现.     private final static String strDot = "点 ";     /**     * 功能: 提取符号位. 说明: 如果输入参数是 "-13.3 ",调用该函数的返回值是 "负 "; 如果输入参数是 "13.3 ",     * 调用该函数的返回值是 " "(空值).     *     * @param pValue     *     */     static private String getSign(String pValue) {         return pValue.indexOf("-") == 0 ? "负 " : " ";     }     /**     * 功能:返回小数部分的汉字 说明:如果输入数据是 12.35,调用该函数返回值是 叁伍     *     * @param pValue     * @return     */     static private String getFraction(String pValue) {         String strFraction = null;// 用来保存小数部分的数字串         int intDotPos = pValue.indexOf(".");         if (intDotPos == -1)// 没有小数部分.             return " ";         strFraction = pValue.substring(intDotPos + 1).trim();         StringBuffer sbResult = new StringBuffer(strFraction.length());         // 开始翻译.         for (int i = 0; i < strFraction.length(); i++)             sbResult.append(a_strNumber[Integer.parseInt(String.valueOf(strFraction.charAt(i)))]);         return sbResult.toString();     }     /**     * 功能: 返回整数部分的汉字. 如果输入参数是: 234.3,调用该函数的返回值是 贰佰叁拾肆.     * @param pValue     * @return     */     static private String getInteger(String pValue) {         String strInteger = null;// 用来保存整数部分数字串         int intDotPos = pValue.indexOf(".");// 记录 ". "所在位置         int intSignPos = pValue.indexOf("-");         if (intDotPos == -1)             intDotPos = pValue.length();         strInteger = pValue.substring(intSignPos + 1, intDotPos);// 取出整数部分         // 反转整数部分数据         strInteger = new StringBuffer(strInteger).reverse().toString().trim();         // -----------------------------------------------------------         // 开始翻译:         StringBuffer sbResult = new StringBuffer();         for (int i = 0; i < strInteger.length(); i++) {             sbResult.append(a_strModify[i]); //            System.out.println(String.valueOf(strInteger.charAt(i))); //            System.out.println(a_strNumber[Integer.parseInt(String.valueOf(strInteger.charAt(i)))]);             sbResult.append(a_strNumber[Integer.parseInt(String.valueOf(strInteger.charAt(i)))]); //            System.out.println(a_strNumber[strInteger.charAt(i) - 48]); //            sbResult.append(a_strNumber[strInteger.charAt(i) - 48]);         }                 sbResult = sbResult.reverse();         // 这个时候得到的结果不 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,需要调整.         // 203返回值是 贰佰零拾三个 正确 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 是 贰佰零三         // --------------------------------------------------------------------------         // 串调整.         replace(sbResult, "拾零", "拾");         replace(sbResult, "零拾", "零");         replace(sbResult, "零佰", "零");         replace(sbResult, "零仟", "零");         replace(sbResult, "零万", "万 ");         replace(sbResult, "零亿", "亿 ");         //        replace(sbResult, "零拾 ", "零 "); //        replace(sbResult, "零佰 ", "零 "); //        replace(sbResult, "零仟 ", "零 "); //        replace(sbResult, "零万 ", "万 "); //        replace(sbResult, "零亿 ", "亿 ");         // 多个”零“调整处理         replace(sbResult, "零零", "零");         replace(sbResult, "零零零 ", "零 ");         replace(sbResult, "零零零零万 ", " ");// 这两句不能颠倒顺序         replace(sbResult, "零零零零 ", " ");         replace(sbResult, "壹拾亿 ", "拾亿 ");// 这样读起来更习惯.         replace(sbResult, "壹拾万 ", "拾万 ");         // --------------------------------------------------------------------------         if (sbResult.charAt(sbResult.length() - 1) == '零'                 && sbResult.length() != 1)// 删除个位上的零             sbResult.deleteCharAt(sbResult.length() - 1);         if (strInteger.length() == 2) {             replace(sbResult, "壹拾 ", "拾 ");         }         return sbResult.toString();// 将结果反转回来.     }     /**     * 功能: 返回分割符号 如果参数是 "12.3 " 调用该函数的返回值是 "点 " 如果参数是 "12 " 调用该函数的返回值是 " "(空值)     *     * @param pValue     * @return     */     static private String getDot(String pValue) {         return pValue.indexOf(".") != -1 ? "点 " : " ";     }     // 数字到汉字     static public String NumberToChinese(double pValue) {         // 注意:不能用string.valueOf(pValue)处理,你自己试试就知道了.         java.text.DecimalFormat df = new java.text.DecimalFormat("#.######### ");         String pTemp = String.valueOf(df.format(pValue));         StringBuffer sbResult = new StringBuffer(getSign(pTemp)                 + getInteger(pTemp) + getDot(pTemp) + getFraction(pTemp));         return sbResult.toString();     }     /**     * 功能:用给定字符串pDest替换字符串pValue中的pSource     *     * @param pValue     * @param pSource     * @param pDest     * @return 经过替换处理的字符串 例:pValue= xy ,pSource =x ,pDest = 测试 调用改函数后pValue =测试y     *     *        说明一下: 如果 pvalue= xxx pSource = xx 处理结果是 x     *        ,这个结果可能与您平时看到的替换函数有点不一样,通常应该是 pSource =xx.     *     */     static private void replace(StringBuffer pValue, String pSource,             String pDest) {         if (pValue == null || pSource == null || pDest == null)             return;         int intPos = 0;// 记录pSource在pValue中的位置         do {             // ---------------------------------------------------             // intPos = pValue.toString().indexOf(pSource,intPos);             // ---------------------------------------------------             // ============================================             intPos = pValue.toString().indexOf(pSource);             // ============================================             if (intPos == -1)// 没有找到pSource.                 break;             pValue.delete(intPos, intPos + pSource.length());             pValue.insert(intPos, pDest);             // ---------------------------------             // intPos += pSource.length();             // ---------------------------------         } while (true);     }     // 现在发现这样的处理没有什么实际意义。所以我就不写了.     public String ChineseToNumber(String pValue) {         return null;     }     public static void main(String[] args) {         // 为了方便您看程序运行结果,我将所有 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 都设置成静态的         // 测试:                 System.err.println(0.34);         System.err.println(NumberToChinese(0.34));                 System.err.println(10);         System.err.println(NumberToChinese(10));                 System.err.println(100);         System.err.println(NumberToChinese(100));         System.err.println(12);         System.err.println(NumberToChinese(12)); //         System.err.println(102);         System.err.println(NumberToChinese(102)); //         System.err.println(1022);         System.err.println(NumberToChinese(1022)); //         System.err.println(10009);         System.err.println(NumberToChinese(10009));         System.err.println(100000);         System.err.println(NumberToChinese(100000));         System.err.println(1000008);         System.err.println(NumberToChinese(1000008));         System.err.println(10000080);         System.err.println(NumberToChinese(10000080));         System.err.println(1000020300);         System.err.println(NumberToChinese(1000020300));         System.err.println(10.34);         System.err.println(NumberToChinese(10.34));         System.err.println(101.34);         System.err.println(NumberToChinese(101.34));         System.err.println(-101.34);         System.err.println(NumberToChinese(-101.34));         System.err.println(-100100010.33);         System.err.println(NumberToChinese(-100100010.33));     } }
本文档为【阿拉伯数字转换成中文大写】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321635
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:7
分类:生活休闲
上传时间:2017-09-19
浏览量:454