我是靠谱客的博主 沉默小海豚,最近开发中收集的这篇文章主要介绍java 分转元_java中金额元转万元工具类的实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ebb0cd79d49cf6d02b168bc4f5dda777.png

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

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;

}

}

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

最后

以上就是沉默小海豚为你收集整理的java 分转元_java中金额元转万元工具类的实例的全部内容,希望文章能够帮你解决java 分转元_java中金额元转万元工具类的实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部