数字--英文金额


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[i] + " ").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("^[ ]*", ""));
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值