java中金额元转万元工具类的实例
程序员文章站
2022-05-09 09:05:04
我就废话不多说了,大家还是直接看代码吧~public static void main(string[] args) { // 具体的金额(单位元) string value = "8800006...
我就废话不多说了,大家还是直接看代码吧~
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; } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。