时间:2021-05-19
我就废话不多说了,大家还是直接看代码吧~
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; }}以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了java金额数字转中文工具类的具体代码,供大家参考,具体内容如下java金额数字转中文工具类ConvertNum.javapackageli
10月21日消息,《》获悉,昨日,德邦股份发生2笔大宗交易,共成交1530.17万元。第1笔成交价格为14.77元,成交13.60万股,成交金额200.87万元
微信理财通多个基金赎回金额及次数有限制吗? 一个神风证号,每月赎回不超过100万元;一个账户,每日最多赎回5次,每次最高5万元,每月不超过100万元。
香飘飘上半年实现整体营收13.77亿元,同比增长58.26%,净利润2352.96万元,去年同期为亏损5458.6万元。13.62亿元的主营业务收入中,冲泡类占
5月11日消息,《》获悉,经统计,今年一季度,河南省邮政快递业减税降费金额合计为12483.89万元。其中,邮政企业减税降费金额为8782.42万元,快递企业减