日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人民币(RMB)小写/数字转换大写工具类,精确到分,修复‘圆零零’为‘圆整’,修复科学计数法处理异常。

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人民币(RMB)小写/数字转换大写工具类,精确到分,修复‘圆零零’为‘圆整’,修复科学计数法处理异常。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 轉換為中國人民幣大寫字符串,精確到分* @param money 傳入小寫數字字符串* @return String* @throws Exception*/public static String toRMBUpper(String money) throws Exception {boolean lessZero = false;//When money is scientific notationif (money.contains("E")){BigDecimal bg = new BigDecimal(Double.valueOf(money));money = bg.toPlainString();}if(money.startsWith("-")) {money = money.substring(1);lessZero = true;}if (!money.matches("^[0-9]*$|^0+\\.[0-9]+$|^[1-9]+[0-9]*$|^[1-9]+[0-9]*.[0-9]+$")) {throw new Exception("錢數格式錯誤!");}String[] part = money.split("\\.");String integerData = part[0];String decimalData = part.length > 1 ? part[1] : "";//Replace front 0if(integerData.matches("^0+$")){integerData = "0";}else if(integerData.matches("^0+(\\d+)$")){integerData = integerData.replaceAll("^0+(\\d+)$", "$1");}StringBuffer integer = new StringBuffer();for (int i = 0; i < integerData.length(); i++) {char perchar = integerData.charAt(i);integer.append(upperNumber(perchar));integer.append(upperNumber(integerData.length() - i - 1));}StringBuffer decimal = new StringBuffer();if (part.length > 1 && !"00".equals(decimalData)) {int length = decimalData.length() >= 2 ? 2 : decimalData.length();for (int i = 0; i < length; i++) {char perchar = decimalData.charAt(i);decimal.append(upperNumber(perchar));if (i == 0)decimal.append('角');if (i == 1)decimal.append('分');}}String result = integer.toString() + decimal.toString();result = dispose(result);if(lessZero && !"零圓整".equals(result)) {result = "負" + result;}return result;}private static char upperNumber(char number) {switch (number) {case '0':return '零';case '1':return '壹';case '2':return '貳';case '3':return '叁';case '4':return '肆';case '5':return '伍';case '6':return '陸';case '7':return '柒';case '8':return '捌';case '9':return '玖';}return '0';}private static char upperNumber(int index) {int realIndex = index % 9;if(index > 8) {realIndex = (index - 9) % 8;realIndex = realIndex + 1;}switch (realIndex) {case 0:return '圓';case 1:return '拾';case 2:return '佰';case 3:return '仟';case 4:return '萬';case 5:return '拾';case 6:return '佰';case 7:return '仟';case 8:return '億';}return '0';}private static String dispose(String result) {result = result.replaceAll("0", "");result = result.replaceAll("零仟零佰零拾|零仟零佰|零佰零拾|零仟|零佰|零拾", "零");result = result.replaceAll("零+", "零").replace("零億", "億");result = result.matches("^.*億零萬[^零]仟.*$") ? result.replace("零萬", "零") : result.replace("零萬", "萬");result = result.replace("億萬", "億");//Processing decimalsresult = result.replace("零角", "零").replace("零分", "");result = result.replaceAll("(^[零圓]*)(.+$)", "$2");result = result.replaceAll("(^.*)([零]+圓)(.+$)", "$1圓零$3");//Processing integerresult = result.replaceAll("圓零角零分|圓零角$|圓$|^零$|圓零$|圓零零$|零圓$", "圓整");result = result.replaceAll("^圓整$", "零圓整");return result;}public static void main(String[] args) throws Exception {//TestSystem.out.println(toRMBUpper("9999999999.0"));//Out: 玖拾玖億玖仟玖佰玖拾玖萬玖仟玖佰玖拾玖圓整}

?

總結

以上是生活随笔為你收集整理的人民币(RMB)小写/数字转换大写工具类,精确到分,修复‘圆零零’为‘圆整’,修复科学计数法处理异常。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。