读书人

将汉语大写转换为阿拉伯数字

发布时间: 2013-08-01 15:23:18 作者: rapoo

将中文大写转换为阿拉伯数字
将”壹拾叁亿零壹“转换为”1300000001“的代码

代码如下:

package com.moneyTransfer.Test;/** *  * @author yangjianzhou * 在0---9999亿的范围内的转换 */public class ChineseToDigital {private static final String data = "壹贰叁肆伍陆柒捌玖";private static final String units = "拾佰仟";public static void main(String[] args) {System.out.println(getDigital("壹拾叁亿零壹"));}public static double getDigital(String chineseMoney){char units[] = {'亿','万'};int indexY = chineseMoney.indexOf(units[0]);int indexW = chineseMoney.indexOf(units[1]);double result = 0.0;if(indexY>0){String substringY = chineseMoney.substring(0, indexY);result = result+Math.pow(10000, 2)*getNumber(substringY);}if(indexW>0){String substringW = chineseMoney.substring(indexY, indexW);result = result +Math.pow(10000, 1)*getNumber(substringW);} if(indexY<0&&indexW<0){ String  substringG = chineseMoney; result = result +getNumber(substringG); } if(indexW<0&&indexY>0&&indexY<chineseMoney.length()-1){ String  substringG = chineseMoney.substring(indexY+1, chineseMoney.length()); result = result +getNumber(substringG); } if(indexW>0&&indexW<chineseMoney.length()-1){ String  substringG = chineseMoney.substring(indexW, chineseMoney.length()); result = result +getNumber(substringG); }   return result;}public static double getNumber(String chineseStr){double result = 0;for(int i=0;i<chineseStr.length();i++){int indexData = data.indexOf(chineseStr.charAt(i));int indexUnit = units.indexOf(chineseStr.charAt(i));if(indexData>=0){result = result +(indexData+1);}else if(indexUnit>=0){result = result*Math.pow(10, indexUnit+1);}}return result;}}


运行结果如下:
1.300000001E9

读书人网 >编程

热点推荐