java中金额元转万元工具类的实例

 更新时间:2021年02月19日 14:50:10   作者:毛公鼎  
这篇文章主要介绍了java中金额元转万元工具类的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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

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

相关文章

  • SpringBoot 任务调度动态设置方式(不用重启服务)

    SpringBoot 任务调度动态设置方式(不用重启服务)

    这篇文章主要介绍了SpringBoot 任务调度 动态设置方式(不用重启服务),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java 读取系统Properties代码实例

    java 读取系统Properties代码实例

    这篇文章主要介绍了java 读取系统Properties代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Mybatis如何传入多个参数的实现代码

    Mybatis如何传入多个参数的实现代码

    这篇文章主要介绍了Mybatis如何传入多个参数的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • SpringMvc3+extjs4实现上传与下载功能

    SpringMvc3+extjs4实现上传与下载功能

    这篇文章主要为大家详细介绍了SpringMvc3+extjs4实现上传与下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 关于Spring Boot动态权限变更问题的实现方案

    关于Spring Boot动态权限变更问题的实现方案

    这篇文章主要介绍了Spring Boot动态权限变更实现的整体方案使用session作为缓存,结合AOP技术进行token认证和权限控制,本文给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • java动态绑定和静态绑定用法实例详解

    java动态绑定和静态绑定用法实例详解

    这篇文章主要介绍了java动态绑定和静态绑定用法,结合实例形式详细分析了java动态绑定与静态绑定相关概念、原理、实现方法及使用注意事项,需要的朋友可以参考下
    2019-05-05
  • java获取两个List集合的交集代码示例

    java获取两个List集合的交集代码示例

    这篇文章主要给大家介绍了关于java获取两个List集合交集的相关资料,我们可以使用Stream操作来对集合进行一系列的操作,其中包括求交集,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    这篇文章主要介绍了为spring get请求添加自定义的参数处理操作(如下划线转驼峰),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot 统一异常处理的实现示例

    SpringBoot 统一异常处理的实现示例

    本文主要介绍了SpringBoot 统一异常处理的实现示例,目的就是在异常发生时,尽可能地减少破坏,下面就来介绍一下,感兴趣的可以了解一下
    2024-07-07
  • Java 8 中 Map 骚操作之 merge() 的使用方法

    Java 8 中 Map 骚操作之 merge() 的使用方法

    本文简单介绍了一下Map.merge()的方法,除此之外,Java 8 中的HashMap实现方法使用了TreeNode和 红黑树,原理很相似,今天通过本文给大家介绍Java 8 中 Map 骚操作之 merge() 的用法 ,需要的朋友参考下吧
    2021-07-07

最新评论