1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 金额转换 阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 - 叁拾贰万柒仟

金额转换 阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 - 叁拾贰万柒仟

时间:2024-06-20 22:23:23

相关推荐

金额转换 阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 - 叁拾贰万柒仟

/** 定义数组存放数字对应的大写 */private final static String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍","陆", "柒", "捌", "玖"};/** 定义数组存放元以上位数的大写 */private final static String[] STR_DIGIT_UPP = {"", "拾", "佰", "仟", "万", "拾","佰", "仟", "亿", "拾", "佰", "仟"};/** 定义数组存放元以下位数的大写 */private final static String[] STR_DIGIT_LOW = {"角", "分", ""};/*** 第一题* 金额转换,阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 -> 叁拾贰万柒仟叁佰贰拾捌元玖角陆分。* 所有字符:零壹贰叁肆伍陆柒捌玖拾佰仟万亿元角分。* @param money 需要转换的字符串* @return 中文表示的金额。如果输入异常,则返回null*/public String convert(String money){try{// 没有异常进行转换,有异常捕获异常return numberToChinese(new Double(money).doubleValue());}catch (Exception e){return null;}}/*** 将一个数字转化为金额* * @param tempNumber 传入一个double的变量* @return 返一个转换好的字符串*/private String numberToChinese(double doubleValue){DecimalFormat df = new DecimalFormat("#.##");String pTemp = String.valueOf(df.format(doubleValue));StringBuffer res = new StringBuffer(getSign(pTemp) + getInteger(pTemp)+ "元" + getFraction(pTemp));System.out.println(res.toString());return res.toString();}/*** 判断传入的字符串中是否有-如果有则返回负* * @param tempString* @return*/private String getSign(String tempString){return tempString.indexOf("-") != -1 ? "负" : "";}/*** 转换整数部分* * @param tempString* @return 返回整数部分*/private String getInteger(String tempString){// 用来保存整数部分数字串String strInteger = null;// 记录"."所在位置int dotIndex = tempString.indexOf(".");int intSignPos = tempString.indexOf("-");if (dotIndex == -1){dotIndex = tempString.length();}// 取出整数部分strInteger = tempString.substring(intSignPos + 1, dotIndex);strInteger = new StringBuffer(strInteger).reverse().toString();StringBuffer res = new StringBuffer();for (int i = 0; i < strInteger.length(); i++){res.append(STR_DIGIT_UPP[i]);res.append(STR_NUMBER[strInteger.charAt(i) - 48]);}res = res.reverse();replace(res, "零拾", "零");replace(res, "零佰", "零");replace(res, "零仟", "零");replace(res, "零万", "万");replace(res, "零亿", "亿");replace(res, "零零", "零");replace(res, "零零零", "零");replace(res, "零零零零万", "");replace(res, "零零零零", "");replace(res, "壹拾亿", "拾亿");replace(res, "壹拾万", "拾万");// 删除个位数上的零if (res.charAt(res.length() - 1) == '零' && res.length() != 1)res.deleteCharAt(res.length() - 1);if (strInteger.length() == 2){replace(res, "壹拾", "拾");}return res.toString();}/*** 替代字符* * @param pValue* @param pSource* @param pDest*/private void replace(StringBuffer pValue, String pSource, String pDest){boolean flag = pValue == null || pSource == null || pDest == null;if (flag){return;}// 记录pSource在pValue中的位置int intPos = 0;do{intPos = pValue.toString().indexOf(pSource);// 没有找到intPosif (intPos == -1){break;}pValue.delete(intPos, intPos + pSource.length());pValue.insert(intPos, pDest);} while (true);}/*** 转换小数部分* * @param tempString* @return*/private String getFraction(String tempString){String strFraction = null;int dotIndex = tempString.indexOf(".");// 没有点说明没有小数,直接返回if (dotIndex == -1)return "";strFraction = tempString.substring(dotIndex + 1);StringBuffer res = new StringBuffer(strFraction.length());for (int i = 0; i < strFraction.length(); i++){res.append(STR_NUMBER[strFraction.charAt(i) - 48]);res.append(STR_DIGIT_LOW[i]);}return res.toString();}

金额转换 阿拉伯数字的金额转换为中国传统的形式。例如:327328.96 - 叁拾贰万柒仟叁佰贰拾捌元玖角陆分。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。