数字--英文金额
package com.ext;import java.util.HashMap;import java.util.Map;public class Convert {public final String[] units = new String[] { "", "thousand", "million","billion" ,"trillion"};public final static Map<Integer, String> map = new HashMap<Integer, String>();static {//map.put(0,"zero");map.put(1, "one");map.put(2, "two");map.put(3, "three");map.put(4, "four");map.put(5, "five");map.put(6, "six");map.put(7, "seven");map.put(8, "eight");map.put(9, "nine");map.put(10, "ten");map.put(11, "eleven");map.put(12, "twelve");map.put(13, "thirteen");map.put(14, "fourteen");map.put(15, "fifteen");map.put(16, "sixteen");map.put(17, "seventeen");map.put(18, "eighteen");map.put(19, "nineteen");map.put(20, "twenty");map.put(30, "thirty");map.put(40, "forty");map.put(50, "fifty");map.put(60, "sixty");map.put(70, "seventy");map.put(80, "eighty");map.put(90, "ninety");}public String convert(String number) {if(null== number || "".equals(number)|| "0".equals(number)) {return "";}number = number.replace(",", "");int pointPos = number.indexOf(".");String num1 = null;String num2 = null;if (-1 == pointPos) {num1 = number;} else {num1 = number.substring(0, pointPos);num2 = number.substring(pointPos + 1);}int c = (num1.length() + 2) / 3;int offset = c * 3 - num1.length();int offset_wk = offset;while (offset_wk != 0) {num1 = "*" + num1;offset_wk--;}StringBuffer sb = new StringBuffer();for (int i = 0; i < c; i++) {String s;if (i == c - 1 && offset != 0) {s = num1.substring(offset, 3);} else {s = num1.substring((c - i - 1) * 3, (c - i) * 3);}sb.insert(0, units + " ").insert(0,covertLessThanThousand(s) + " ");}if(!"".equals(sb.toString().trim())){sb.append("dollar ");}if (null != num2 && Integer.parseInt(num2) != 0) {sb.append(covertLessThanThousand(num2)).append(" cent");}return sb.toString();}public String covertLessThanThousand(String number) {StringBuffer sb = new StringBuffer();int iNum = Integer.parseInt(number);if (iNum / 100 != 0) {sb.append(map.get(iNum / 100)).append(" ").append("hundred").append(" ");iNum = iNum % 100;}if (iNum / 10 != 0 && iNum > 19) {sb.append(map.get(iNum - iNum % 10)).append(" ");iNum = iNum % 10;}sb.append(map.get(iNum) == null ? "" : map.get(iNum)).append(" ");return sb.toString().trim();}public static void main(String[] args) {//String str = new Convert().convert("55,555,123,456,789.01");//String str = new Convert().convert("1.01");String str = new Convert().convert("99,999,999,999,999.99");System.out.println(str.replaceAll("^[ ]*", ""));}}
页:
[1]