我就废话不多说了,大家还是直接看代码吧~

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;
}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持萬仟网。如有错误或未考虑完全的地方,望不吝赐教。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!