java中金額元轉萬元工具類的實例
我就廢話不多說瞭,大傢還是直接看代碼吧~
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; } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。