最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中金額元轉(zhuǎn)萬元工具類的實(shí)例

 更新時(shí)間:2021年02月19日 14:50:10   作者:毛公鼎  
這篇文章主要介紹了java中金額元轉(zhuǎn)萬元工具類的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

public static void main(String[] args) {
  // 具體的金額(單位元)
  String value = "88000067898";
  BigDecimal bigDecimal = new BigDecimal(value);
  // 轉(zhuǎn)換為萬元(除以10000)
  BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000"));
  // 保留兩位小數(shù)
  DecimalFormat formater = new DecimalFormat("0");
  // 四舍五入
  formater.setRoundingMode(RoundingMode.HALF_UP); 
  // 格式化完成之后得出結(jié)果
  String formatNum = formater.format(decimal);
  System.out.println(formatNum);
 }
 /**元轉(zhuǎn)萬元且四舍五入取整*/
 public static String getNumberWan(String value) {
  BigDecimal bigDecimal = new BigDecimal(value);
  // 轉(zhuǎn)換為萬元(除以10000)
  BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000"));
  // 保留兩位小數(shù)
  DecimalFormat formater = new DecimalFormat("0");
  // 四舍五入
  formater.setRoundingMode(RoundingMode.HALF_UP); 
  // 格式化完成之后得出結(jié)果
  String rs = formater.format(decimal);
  return rs;
 }
 
 /**元轉(zhuǎn)萬元且保留兩位小數(shù)并四舍五入*/
 public static String getNumberWanTwo(String value) {
  BigDecimal bigDecimal = new BigDecimal(value);
  // 轉(zhuǎn)換為萬元(除以10000)
  BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000"));
  // 保留兩位小數(shù)
  DecimalFormat formater = new DecimalFormat("0");
  // 四舍五入
  formater.setRoundingMode(RoundingMode.HALF_UP); 
  // 格式化完成之后得出結(jié)果
  String rs = formater.format(decimal);
  return rs;
 }

補(bǔ)充:用java實(shí)現(xiàn)將金額由數(shù)字轉(zhuǎn)為中文的數(shù)字金額

寫一個(gè)金額由數(shù)字轉(zhuǎn)為中文的數(shù)字金額

例如:

123123.12轉(zhuǎn)為壹拾貳萬叁仟壹佰貳拾叁元壹角貳分

由于是從開發(fā)過程中代碼直接copy過來的,有一部分可以忽略,新人剛剛工作,寫的不好,請(qǐng)多指正

import java.util.Scanner;
public class Test {
  //數(shù)字單位
  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("請(qǐng)輸入金額:");
    //獲取前端傳遞過來的金額數(shù)字
    String money=scanner.nextLine();
    //1.判斷是否為null
    st.isNull(money);
    //2.判斷是否有非法字符
    st.isIllegal(money);
    //3.判斷是否超過限額
    String[] array=st.isBeyondMax(money);
    //4.整數(shù)位字符轉(zhuǎn)換
    StringBuffer chineseInt=st.convertInt(array[0]);
    //5.判斷有無小數(shù)位
    if(array.length==2) {
      //6.有則進(jìn)行小數(shù)位字符轉(zhuǎn)換
      StringBuffer chineseDec=st.convertDec(array[1]);
      //7.拼接整數(shù)和小數(shù)位
      chineseInt=chineseInt.append(chineseDec);
    }
    //8.將轉(zhuǎn)為大寫的金額設(shè)置回總線
    System.out.println(chineseInt);
  }
  /**
   * 將小數(shù)位的金額數(shù)字轉(zhuǎn)化為中文大寫
   * @param string 金額數(shù)字
   * @return 轉(zhuǎn)為中文的金額數(shù)字
   */
  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;
  }
  /**
   * 將整數(shù)位的金額數(shù)字對(duì)應(yīng)轉(zhuǎn)化為中文大寫
   * @param string 金額數(shù)字
   * @return 轉(zhuǎn)為中文的金額數(shù)字
   */
  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;
  }
  /**
   * 循環(huán)整個(gè)字符串,替換字符
   * @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;
  }
  /**
   * 將給定的數(shù)字字符替換為對(duì)應(yīng)的中文數(shù)字字符
   * @param string 數(shù)字字符
   * @return 中文數(shù)字字符
   */
  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;
  }
  /**
   * 檢測(cè)傳入金額字符是否為空
   * @param money 金額字符
   */
  private void isNull(String money) {
    if(money == null) {
      //拋出異常
    }
  }
  /**
   * 檢測(cè)傳入金額字符是否符合條件
   * @param money 金額字符
   */
  private void isIllegal(String money) {
    if(!money.matches("\\d+.?\\d*")) {
      //拋出異常
    }
  }
  /**
   * 檢測(cè)傳入金額字符是否超出最大值
   * @param money 金額字符
   * @return 返回拆分的金額數(shù)字
   */
  private String[] isBeyondMax(String money) {
    String[] array=money.split("\\.");
    //整數(shù)位不能超過9位,小數(shù)位不能超過2為
    if(array[0].length()>9 || (array.length>1 &&array[1].length()>2)) {
      //拋出異常
    }
    return array;
  }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • IDEA 當(dāng)前在線人數(shù)和歷史訪問量的示例代碼

    IDEA 當(dāng)前在線人數(shù)和歷史訪問量的示例代碼

    這篇文章主要介紹了IDEA 當(dāng)前在線人數(shù)和歷史訪問量的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring Cloud 動(dòng)態(tài)刷新配置信息教程詳解

    Spring Cloud 動(dòng)態(tài)刷新配置信息教程詳解

    這篇文章主要介紹了Spring Cloud 動(dòng)態(tài)刷新配置信息的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • Java源碼重讀之ConcurrentHashMap詳解

    Java源碼重讀之ConcurrentHashMap詳解

    ConcurrentHashMap(CHM)是日常開發(fā)中使用頻率非常高的一種數(shù)據(jù)結(jié)構(gòu)。本文將從源碼角度帶大家深入了解一下ConcurrentHashMap的使用,需要的可以收藏一下
    2023-05-05
  • Java的LinkedHashMap的實(shí)現(xiàn)原理詳解

    Java的LinkedHashMap的實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Java的LinkedHashMap的實(shí)現(xiàn)原理詳解,???LinkedHashMap是Map接口的哈希表和鏈接列表實(shí)現(xiàn),具有可預(yù)知的迭代順序,此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵,此類不保證映射的順序,特別是它不保證該順序恒久不變,需要的朋友可以參考下
    2023-09-09
  • Java中實(shí)現(xiàn)在一個(gè)方法中調(diào)用另一個(gè)方法

    Java中實(shí)現(xiàn)在一個(gè)方法中調(diào)用另一個(gè)方法

    下面小編就為大家分享一篇Java中實(shí)現(xiàn)在一個(gè)方法中調(diào)用另一個(gè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • java為什么會(huì)出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    java為什么會(huì)出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    這篇文章主要介紹了Java精度丟失的問題,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08
  • 解決@Autowired注入static接口的問題

    解決@Autowired注入static接口的問題

    這篇文章主要介紹了解決@Autowired注入static接口的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java微信開發(fā)API第三步 微信獲取以及保存接口調(diào)用憑證

    java微信開發(fā)API第三步 微信獲取以及保存接口調(diào)用憑證

    這篇文章主要為大家詳細(xì)介紹了java微信開發(fā)API第二步,微信獲取以及保存接口調(diào)用憑證,感興趣的小伙伴們可以參考一下
    2016-06-06
  • java?executor包參數(shù)處理功能?

    java?executor包參數(shù)處理功能?

    這篇文章主要介紹了java?executor包參數(shù)處理功能,sql語句中的參數(shù)賦值是有由executor包中的parameter子包完成的。parameter子包其實(shí)只有一個(gè)parameterHandler接口并且它定義了兩個(gè)方法,下面我們就來看詳細(xì)內(nèi)容吧,需要的朋友可以參考一下
    2022-02-02
  • Springboot集成第三方j(luò)ar快速實(shí)現(xiàn)微信、支付寶等支付場(chǎng)景

    Springboot集成第三方j(luò)ar快速實(shí)現(xiàn)微信、支付寶等支付場(chǎng)景

    這篇文章主要介紹了Springboot集成第三方j(luò)ar快速實(shí)現(xiàn)微信、支付寶等支付場(chǎng)景,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

荆州市| 昌黎县| 体育| 衡东县| 屏东市| 洪湖市| 玉溪市| 福海县| 鸡西市| 衢州市| 商水县| 利津县| 靖西县| 洪江市| 翁源县| 崇明县| 鄂托克前旗| 泌阳县| 繁峙县| 文安县| 都安| 额尔古纳市| 巴林右旗| 周至县| 英德市| 肃宁县| 邻水| 开封市| 沈阳市| 尼勒克县| 伊宁市| 黄梅县| 安达市| 奇台县| 盐城市| 兴化市| 罗定市| 泉州市| 伊春市| 普宁市| 剑川县|