java中金額元轉(zhuǎn)萬(wàn)元工具類的實(shí)例
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
public static void main(String[] args) { // 具體的金額(單位元) String value = "88000067898"; BigDecimal bigDecimal = new BigDecimal(value); // 轉(zhuǎn)換為萬(wàn)元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留兩位小數(shù) DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出結(jié)果 String formatNum = formater.format(decimal); System.out.println(formatNum); } /**元轉(zhuǎn)萬(wàn)元且四舍五入取整*/ public static String getNumberWan(String value) { BigDecimal bigDecimal = new BigDecimal(value); // 轉(zhuǎn)換為萬(wàn)元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留兩位小數(shù) DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出結(jié)果 String rs = formater.format(decimal); return rs; } /**元轉(zhuǎn)萬(wàn)元且保留兩位小數(shù)并四舍五入*/ public static String getNumberWanTwo(String value) { BigDecimal bigDecimal = new BigDecimal(value); // 轉(zhuǎn)換為萬(wàn)元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000")); // 保留兩位小數(shù) DecimalFormat formater = new DecimalFormat("0"); // 四舍五入 formater.setRoundingMode(RoundingMode.HALF_UP); // 格式化完成之后得出結(jié)果 String rs = formater.format(decimal); return rs; }
補(bǔ)充:用java實(shí)現(xiàn)將金額由數(shù)字轉(zhuǎn)為中文的數(shù)字金額
寫(xiě)一個(gè)金額由數(shù)字轉(zhuǎn)為中文的數(shù)字金額
例如:
123123.12轉(zhuǎn)為壹拾貳萬(wàn)叁仟壹佰貳拾叁元壹角貳分
由于是從開(kāi)發(fā)過(guò)程中代碼直接copy過(guò)來(lái)的,有一部分可以忽略,新人剛剛工作,寫(xiě)的不好,請(qǐng)多指正
import java.util.Scanner; public class Test { //數(shù)字單位 private static final String[] NUMBERS_UNITS= {"拾","佰","仟","萬(wàn)"}; public static void main(String[] args) { Test st=new Test(); Scanner scanner=new Scanner(System.in); System.out.println("請(qǐng)輸入金額:"); //獲取前端傳遞過(guò)來(lái)的金額數(shù)字 String money=scanner.nextLine(); //1.判斷是否為null st.isNull(money); //2.判斷是否有非法字符 st.isIllegal(money); //3.判斷是否超過(guò)限額 String[] array=st.isBeyondMax(money); //4.整數(shù)位字符轉(zhuǎn)換 StringBuffer chineseInt=st.convertInt(array[0]); //5.判斷有無(wú)小數(shù)位 if(array.length==2) { //6.有則進(jìn)行小數(shù)位字符轉(zhuǎn)換 StringBuffer chineseDec=st.convertDec(array[1]); //7.拼接整數(shù)和小數(shù)位 chineseInt=chineseInt.append(chineseDec); } //8.將轉(zhuǎn)為大寫(xiě)的金額設(shè)置回總線 System.out.println(chineseInt); } /** * 將小數(shù)位的金額數(shù)字轉(zhuǎn)化為中文大寫(xiě) * @param string 金額數(shù)字 * @return 轉(zhuǎn)為中文的金額數(shù)字 */ 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; } /** * 將整數(shù)位的金額數(shù)字對(duì)應(yīng)轉(zhuǎn)化為中文大寫(xiě) * @param string 金額數(shù)字 * @return 轉(zhuǎn)為中文的金額數(shù)字 */ 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; } /** * 循環(huán)整個(gè)字符串,替換字符 * @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; } /** * 將給定的數(shù)字字符替換為對(duì)應(yīng)的中文數(shù)字字符 * @param string 數(shù)字字符 * @return 中文數(shù)字字符 */ 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; } /** * 檢測(cè)傳入金額字符是否為空 * @param money 金額字符 */ private void isNull(String money) { if(money == null) { //拋出異常 } } /** * 檢測(cè)傳入金額字符是否符合條件 * @param money 金額字符 */ private void isIllegal(String money) { if(!money.matches("\\d+.?\\d*")) { //拋出異常 } } /** * 檢測(cè)傳入金額字符是否超出最大值 * @param money 金額字符 * @return 返回拆分的金額數(shù)字 */ private String[] isBeyondMax(String money) { String[] array=money.split("\\."); //整數(shù)位不能超過(guò)9位,小數(shù)位不能超過(guò)2為 if(array[0].length()>9 || (array.length>1 &&array[1].length()>2)) { //拋出異常 } return array; } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- 教你如何使用Java多線程編程LockSupport工具類
- Java常用工具類庫(kù)——Hutool的使用簡(jiǎn)介
- 淺談java如何生成分享海報(bào)工具類
- java中封裝JDBC工具類的實(shí)例分析
- Java編寫(xiě)超時(shí)工具類實(shí)例講解
- Java JDBC自定義封裝工具類的步驟和完整代碼
- Java利用POI讀寫(xiě)Excel文件工具類
- java讀取簡(jiǎn)單excel通用工具類
- Java身份證號(hào)碼校驗(yàn)工具類詳解
- java處理日期的工具類DateUtil
- java身份證合法性校驗(yàn)工具類實(shí)例代碼
- Java實(shí)現(xiàn)RSA加密工具類
- Java基礎(chǔ)之顏色工具類(超詳細(xì)注釋)
相關(guān)文章
SpringBoot 任務(wù)調(diào)度動(dòng)態(tài)設(shè)置方式(不用重啟服務(wù))
這篇文章主要介紹了SpringBoot 任務(wù)調(diào)度 動(dòng)態(tài)設(shè)置方式(不用重啟服務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11java 讀取系統(tǒng)Properties代碼實(shí)例
這篇文章主要介紹了java 讀取系統(tǒng)Properties代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Mybatis如何傳入多個(gè)參數(shù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Mybatis如何傳入多個(gè)參數(shù)的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12SpringMvc3+extjs4實(shí)現(xiàn)上傳與下載功能
這篇文章主要為大家詳細(xì)介紹了SpringMvc3+extjs4實(shí)現(xiàn)上傳與下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06關(guān)于Spring Boot動(dòng)態(tài)權(quán)限變更問(wèn)題的實(shí)現(xiàn)方案
這篇文章主要介紹了Spring Boot動(dòng)態(tài)權(quán)限變更實(shí)現(xiàn)的整體方案使用session作為緩存,結(jié)合AOP技術(shù)進(jìn)行token認(rèn)證和權(quán)限控制,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06java動(dòng)態(tài)綁定和靜態(tài)綁定用法實(shí)例詳解
這篇文章主要介紹了java動(dòng)態(tài)綁定和靜態(tài)綁定用法,結(jié)合實(shí)例形式詳細(xì)分析了java動(dòng)態(tài)綁定與靜態(tài)綁定相關(guān)概念、原理、實(shí)現(xiàn)方法及使用注意事項(xiàng),需要的朋友可以參考下2019-05-05為spring get請(qǐng)求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰)
這篇文章主要介紹了為spring get請(qǐng)求添加自定義的參數(shù)處理操作(如下劃線轉(zhuǎn)駝峰),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09SpringBoot 統(tǒng)一異常處理的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot 統(tǒng)一異常處理的實(shí)現(xiàn)示例,目的就是在異常發(fā)生時(shí),盡可能地減少破壞,下面就來(lái)介紹一下,感興趣的可以了解一下2024-07-07Java 8 中 Map 騷操作之 merge() 的使用方法
本文簡(jiǎn)單介紹了一下Map.merge()的方法,除此之外,Java 8 中的HashMap實(shí)現(xiàn)方法使用了TreeNode和 紅黑樹(shù),原理很相似,今天通過(guò)本文給大家介紹Java 8 中 Map 騷操作之 merge() 的用法 ,需要的朋友參考下吧2021-07-07