/** * BigDecimal 相乘,四舍五入保留0位 * * @param a * @param b * @return a*b */ public static BigDecimal mutiply(String a, String b, int roundingMode) { BigDecimal bd = new BigDecimal(a); return bd.multiply(new BigDecimal(b)).setScale(DFT_SCALE, roundingMode); }
/** * BigDecimal 相除,四舍五入保留两位 * * @param a * @param b * @return a/b */ public static BigDecimal div(String a, String b, int roundingMode) { BigDecimal decimal1 = new BigDecimal(a); BigDecimal decimal2 = new BigDecimal(b); return decimal1.divide(decimal2, DFT_SCALE, roundingMode); }
/** * BigDecimal 相加,四舍五入保留两位 * * @param a * @param b * @return a+b */ public static BigDecimal sum(String a, String b, int roundingMode) { BigDecimal decimal1 = new BigDecimal(a); BigDecimal decimal2 = new BigDecimal(b); // DecimalFormat format = new DecimalFormat("#0.00"); return decimal1.add(decimal2).setScale(DFT_SCALE, roundingMode); }
/** * BigDecimal 相减,四舍五入保留两位 * * @param a * @param b * @return a+b */ public static BigDecimal sub(String a, String b, int roundingMode) { BigDecimal decimal1 = new BigDecimal(a); BigDecimal decimal2 = new BigDecimal(b); // DecimalFormat format = new DecimalFormat("#0.00"); return decimal1.subtract(decimal2).setScale(DFT_SCALE, roundingMode); }
/** * 100.00 为10000 * * @param a * @return */ public static BigDecimal format(String a, int roundingMode) { return new BigDecimal(a).multiply(new BigDecimal(100)).setScale(0, roundingMode); }
public static void main(String[] args) { String number = "54452"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "30200"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "30000.05"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "30000.00"; System.out.println(number + " " + MoneyUtil.toChinese(number)); } } 备注:最后面的main方法是具体的调用。
public static final String EMPTY=""; public static final String ZERO="零"; public static final String ONE="壹"; public static final String TWO="贰"; public static final String THREE="叁"; public static final String FOUR="肆"; public static final String FIVE="伍"; public static final String SIX="陆"; public static final String SEVEN="柒"; public static final String EIGHT="捌"; public static final String NINE="玖"; public static final String TEN="拾"; public static final String HUNDRED="佰"; public static final String THOUSAND="仟"; public static final String TEN_THOUSAND="万"; public static final String HUNDRED_MILLION="亿"; public static final String YUAN="元"; public static final String JIAO="角"; public static final String FEN="分"; public static final String DOT=".";
int indexOfDot=cMoneyStringBuffer.indexOf(DOT); cMoneyStringBuffer.replace(indexOfDot,indexOfDot+1,YUAN); cMoneyStringBuffer.insert(cMoneyStringBuffer.length()-1,JIAO); cMoneyStringBuffer.insert(cMoneyStringBuffer.length(),FEN);
//检查精度的合法性 private void checkPrecision(String moneyStr){ int fractionDigits=moneyStr.length()-moneyStr.indexOf(DOT)-1; if(fractionDigits>2)//精度不能比分低 throw new RuntimeException("金额"+moneyStr+"的小数位数多余两位."); }
public static void main(String[] args){ System.out.println(getInstance().format(new Double(10010001.01))); }
}
陌上画桑
2024-04-21 00:42:25
java实现金额转换,阿拉伯数字的金额转换成中国传统的形式 import java.util.HashMap; import java.text.NumberFormat; import java.lang.StringBuffer; public class SimpleMoneyFormat {
public static final String EMPTY=""; public static final String ZERO="零"; public static final String ONE="壹"; public static final String TWO="贰"; public static final String THREE="叁"; public static final String FOUR="肆"; public static final String FIVE="伍"; public static final String SIX="陆"; public static final String SEVEN="柒"; public static final String EIGHT="捌"; public static final String NINE="玖"; public static final String TEN="拾"; public static final String HUNDRED="佰"; public static final String THOUSAND="仟"; public static final String TEN_THOUSAND="万"; public static final String HUNDRED_MILLION="亿"; public static final String YUAN="元"; public static final String JIAO="角"; public static final String FEN="分"; public static final String DOT=".";
int indexOfDot=cMoneyStringBuffer.indexOf(DOT); cMoneyStringBuffer.replace(indexOfDot,indexOfDot+1,YUAN); cMoneyStringBuffer.insert(cMoneyStringBuffer.length()-1,JIAO); cMoneyStringBuffer.insert(cMoneyStringBuffer.length(),FEN);