我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { // 具体的金额(单位元) String value = "88000067898"; BigDecimal bigDecimal = new BigDecimal(value); // 转换为万元(除以10
我就废话不多说了,大家还是直接看代码吧~
public static void main(String[] args) { // 具体的金额(单位元) String value = "88000067898"; BigDecimal bigDecimal = new BigDecimal(value); // 转换为万元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留两位小数 DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出结果 String formatNum = formater.format(decimal); System.out.println(formatNum); } /**元转万元且四舍五入取整*/ public static String getNumberWan(String value) { BigDecimal bigDecimal = new BigDecimal(value); // 转换为万元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留两位小数 DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出结果 String rs = formater.format(decimal); return rs; } /**元转万元且保留两位小数并四舍五入*/ public static String getNumberWanTwo(String value) { BigDecimal bigDecimal = new BigDecimal(value); // 转换为万元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留两位小数 DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出结果 String rs = formater.format(decimal); return rs; }
补充:用java实现将金额由数字转为中文的数字金额
写一个金额由数字转为中文的数字金额
例如:
123123.12转为壹拾贰万叁仟壹佰贰拾叁元壹角贰分
由于是从开发过程中代码直接copy过来的,有一部分可以忽略,新人刚刚工作,写的不好,请多指正
import java.util.Scanner; public class Test { //数字单位 private static final String[] NUMBERS_UNITS= {"拾","佰","仟","万"}; public static void main(String[] args) { Test st=new Test(); Scanner scanner=new Scanner(System.in); System.out.println("请输入金额:"); //获取前端传递过来的金额数字 String money=scanner.nextLine(); //1.判断是否为null st.isNull(money); //2.判断是否有非法字符 st.isIllegal(money); //3.判断是否超过限额 String[] array=st.isBeyondMax(money); //4.整数位字符转换 StringBuffer chineseInt=st.convertInt(array[0]); //5.判断有无小数位 if(array.length==2) { //6.有则进行小数位字符转换 StringBuffer chineseDec=st.convertDec(array[1]); //7.拼接整数和小数位 chineseInt=chineseInt.append(chineseDec); } //8.将转为大写的金额设置回总线 System.out.println(chineseInt); } /** * 将小数位的金额数字转化为中文大写 * @param string 金额数字 * @return 转为中文的金额数字 */ private StringBuffer convertDec(String string) { StringBuffer str=convert(string); switch(str.length()) { case 1: str.append("角"); break; case 2: str.append("分"); str.insert(1, "角"); break; } return str; } /** * 将整数位的金额数字对应转化为中文大写 * @param string 金额数字 * @return 转为中文的金额数字 */ private StringBuffer convertInt(String string) { StringBuffer str=convert(string); int length=str.length()-1; for (int i = 0,j=str.length()-1; i < length; i++,j--) { int v=i%4; System.out.println("i:"+i+" j:"+j+" v:"+v+" "+str.toString()); str.insert(j, NUMBERS_UNITS[v]); } str.append("元"); return str; } /** * 循环整个字符串,替换字符 * @param string 要替换的字符串 * @return 替换好的字符 */ private StringBuffer convert(String string) { StringBuffer str=new StringBuffer(string); for (int i = 0; i < str.length(); i++) { str.replace(i, i+1,replaceCharacter(str.substring(i, i+1))); } return str; } /** * 将给定的数字字符替换为对应的中文数字字符 * @param string 数字字符 * @return 中文数字字符 */ private String replaceCharacter(String string) { switch(string) { case "0": string="零"; break; case "1": string="壹"; break; case "2": string="贰"; break; case "3": string="叁"; break; case "4": string="肆"; break; case "5": string="伍"; break; case "6": string="陆"; break; case "7": string="柒"; break; case "8": string="捌"; break; case "9": string="玖"; break; } return string; } /** * 检测传入金额字符是否为空 * @param money 金额字符 */ private void isNull(String money) { if(money == null) { //抛出异常 } } /** * 检测传入金额字符是否符合条件 * @param money 金额字符 */ private void isIllegal(String money) { if(!money.matches("\\d+.?\\d*")) { //抛出异常 } } /** * 检测传入金额字符是否超出最大值 * @param money 金额字符 * @return 返回拆分的金额数字 */ private String[] isBeyondMax(String money) { String[] array=money.split("\\."); //整数位不能超过9位,小数位不能超过2为 if(array[0].length()>9 || (array.length>1 &&array[1].length()>2)) { //抛出异常 } return array; } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持易盾网络。如有错误或未考虑完全的地方,望不吝赐教。