將小寫金額轉成大寫金額

/**
 * 
 * @described 將小寫金額轉成大寫金額
 * @author 
 * @date 2016年7月6日 下午8:50:34
 * @see com.util.MoneyTool
 */
public class MoneyTool {


private static final String UNIT = "萬千佰拾億千佰拾萬千佰拾元角分";
private static final String DIGIT = "零壹貳叄肆伍陸柒捌玖";
private static final double MAX_VALUE = 9999999999999.99D;

/**

* @described 將小寫金額轉成大寫金額
* @date 2016年7月6日 下午8:51:58
* @param v 小寫金額
* @return 大寫金額
* @see com.util.MoneyTool.change
*/
public static String change(double v) {
if (v < 0 || v > MAX_VALUE) {
return "參數非法!";
}
long l = Math.round(v * 100);
if (l == 0) {
return "零元整";
}
String strValue = l + "";
// i用來控制數
int i = 0;
// j用來控制單位
int j = UNIT.length() - strValue.length();
String rs = "";
boolean isZero = false;
for (; i < strValue.length(); i++, j++) {
char ch = strValue.charAt(i);
if (ch == '0') {
isZero = true;
if (UNIT.charAt(j) == '億' || UNIT.charAt(j) == '萬'
|| UNIT.charAt(j) == '元') {
rs = rs + UNIT.charAt(j);
isZero = false;
}
} else {
if (isZero) {
rs = rs + "零";
isZero = false;
}
rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);
}
}
if (!rs.endsWith("分")) {
rs = rs + "整";
}
rs = rs.replaceAll("億萬", "億");
return rs;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章