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

java金額數(shù)字轉(zhuǎn)中文工具類(lèi)詳解

 更新時(shí)間:2019年04月22日 10:46:19   作者:阿杜_(tái)ardo  
這篇文章主要為大家詳細(xì)介紹了java金額數(shù)字轉(zhuǎn)中文工具類(lèi)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java金額數(shù)字轉(zhuǎn)中文工具類(lèi)的具體代碼,供大家參考,具體內(nèi)容如下

java金額數(shù)字轉(zhuǎn)中文工具類(lèi)ConvertNum.java

package light.mvc.utils;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
/**
 * 金額數(shù)字轉(zhuǎn)中文工具類(lèi)
 * 
 * @author ardo
 * 
 */
public class ConvertNum {
 
 /**
 * 把金額阿拉伯?dāng)?shù)字轉(zhuǎn)換為漢字表示,小數(shù)點(diǎn)后四舍五入保留兩位
 * 還有一種方法可以在轉(zhuǎn)換的過(guò)程中不考慮連續(xù)0的情況,然后對(duì)最終的結(jié)果進(jìn)行一次遍歷合并連續(xù)的零
 */
 public static String[] ChineseNum = new String[] { "零", "壹", "貳", "叁", "肆",
  "伍", "陸", "柒", "捌", "玖" };
 
 public static String NumToChinese(double num) {
 if (num > 99999999999999.99 || num < -99999999999999.99)
  throw new IllegalArgumentException(
   "參數(shù)值超出允許范圍 (-99999999999999.99 ~ 99999999999999.99)!");
 boolean negative = false;// 正負(fù)標(biāo)號(hào)
 if (num < 0) {
  negative = true;
  num = num * (-1);
 }
 long temp = Math.round(num * 100);
 int numFen = (int) (temp % 10);// 分
 temp = temp / 10;
 int numJiao = (int) (temp % 10);// 角
 temp = temp / 10;
 // 此時(shí)temp只包含整數(shù)部分
 int[] parts = new int[20];// 將金額整數(shù)部分分為在0-9999之間數(shù)的各個(gè)部分
 int numParts = 0;// 記錄把原來(lái)金額整數(shù)部分分割為幾個(gè)部分
 for (int i = 0;; i++) {
  if (temp == 0)
  break;
  int part = (int) (temp % 10000);
  parts[i] = part;
  temp = temp / 10000;
  numParts++;
 }
 boolean beforeWanIsZero = true;// 標(biāo)志位,記錄萬(wàn)的下一級(jí)是否為0
 String chineseStr = "";
 for (int i = 0; i < numParts; i++) {
  String partChinese = partConvert(parts[i]);
  if (i % 2 == 0) {
  if ("".equals(partChinese))
   beforeWanIsZero = true;
  else
   beforeWanIsZero = false;
  }
  if (i != 0) {
  if (i % 2 == 0)// 億的部分
   chineseStr = "億" + chineseStr;
  else {
   if ("".equals(partChinese) && !beforeWanIsZero)// 如果“萬(wàn)”對(duì)應(yīng)的
         // part 為
         // 0,而“萬(wàn)”下面一級(jí)不為
         // 0,則不加“萬(wàn)”,而加“零”
   chineseStr = "零" + chineseStr;
   else {
   if (parts[i - 1] < 1000 && parts[i - 1] > 0)// 如果萬(wàn)的部分不為0,而萬(wàn)前面的部分小于1000大于0,則萬(wàn)后面應(yīng)該跟零
    chineseStr = "零" + chineseStr;
   chineseStr = "萬(wàn)" + chineseStr;
   }
  }
  }
  chineseStr = partChinese + chineseStr;
 }
 if ("".equals(chineseStr))// 整數(shù)部分為0,則表示為零元
  chineseStr = ChineseNum[0];
 else if (negative)// 整數(shù)部分部位0,但是為負(fù)數(shù)
  chineseStr = "負(fù)" + chineseStr;
 chineseStr = chineseStr + "元";
 if (numFen == 0 && numJiao == 0) {
  chineseStr = chineseStr + "整";
 } else if (numFen == 0) {// 0分
  chineseStr = chineseStr + ChineseNum[numJiao] + "角";
 } else {
  if (numJiao == 0)
  chineseStr = chineseStr + "零" + ChineseNum[numFen] + "分";
  else
  chineseStr = chineseStr + ChineseNum[numJiao] + "角"
   + ChineseNum[numFen] + "分";
 }
 return chineseStr;
 }
 
 // 轉(zhuǎn)換拆分后的每個(gè)部分,0-9999之間
 public static String partConvert(int partNum) {
 if (partNum < 0 || partNum > 10000) {
  throw new IllegalArgumentException("參數(shù)必須是大于等于0或小于10000的整數(shù)");
 }
 String[] units = new String[] { "", "拾", "佰", "仟" };
 int temp = partNum;
 String partResult = new Integer(partNum).toString();
 int partResultLength = partResult.length();
 boolean lastIsZero = true;// 記錄上一位是否為0
 String chineseStr = "";
 for (int i = 0; i < partResultLength; i++) {
  if (temp == 0)// 高位無(wú)數(shù)字
  break;
  int digit = temp % 10;
  if (digit == 0) {
  if (!lastIsZero)// 如果前一個(gè)數(shù)字不是0則在當(dāng)前漢字串前加零
   chineseStr = "零" + chineseStr;
  lastIsZero = true;
  } else {
  chineseStr = ChineseNum[digit] + units[i] + chineseStr;
  lastIsZero = false;
  }
  temp = temp / 10;
 }
 return chineseStr;
 }
 
 public static void main(String args[]) {
 double num = 0;
 System.out.println("請(qǐng)輸入金額數(shù)字,-1退出");
 try {
  BufferedReader br = new BufferedReader(new InputStreamReader(
   System.in));
  num = Double.parseDouble(br.readLine());
 } catch (IOException e) {
  System.out.println(e.toString());
 }
 while (num != -1) {
  System.out.println(num + NumToChinese(num));
  try {
  BufferedReader br = new BufferedReader(new InputStreamReader(
   System.in));
  num = Double.parseDouble(br.readLine());
  } catch (IOException e) {
  System.out.println(e.toString());
  }
 }
 System.out.println("其他測(cè)試:");
 System.out.println("100120: " + NumToChinese(100120));
 System.out.println("25000000000005.999: "
  + NumToChinese(25000000000005.999));
 System.out.println("45689263.626: " + NumToChinese(45689263.626));
 System.out.println("0.69457: " + NumToChinese(0.69457));
 System.out.println("253.0: " + NumToChinese(253.0));
 System.out.println("0: " + NumToChinese(0));
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Eclipse 創(chuàng)建一個(gè)簡(jiǎn)單的web項(xiàng)目(圖文教程)

    用Eclipse 創(chuàng)建一個(gè)簡(jiǎn)單的web項(xiàng)目(圖文教程)

    下面小編就為大家?guī)?lái)一篇用Eclipse 創(chuàng)建一個(gè)簡(jiǎn)單的web項(xiàng)目(圖文教程)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java分頁(yè)查詢--分頁(yè)顯示(實(shí)例講解)

    Java分頁(yè)查詢--分頁(yè)顯示(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇Java分頁(yè)查詢--分頁(yè)顯示(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • java并發(fā)編程專(zhuān)題(三)----詳解線程的同步

    java并發(fā)編程專(zhuān)題(三)----詳解線程的同步

    這篇文章主要介紹了JAVA并發(fā)編程 線程同步的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印)

    Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印)

    這篇文章主要介紹了Java在Excel中添加水印的實(shí)現(xiàn)(單一水印、平鋪水印),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • SpringBoot讀寫(xiě)xml上傳到AWS存儲(chǔ)服務(wù)S3的示例

    SpringBoot讀寫(xiě)xml上傳到AWS存儲(chǔ)服務(wù)S3的示例

    這篇文章主要介紹了SpringBoot讀寫(xiě)xml上傳到S3的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-10-10
  • Java復(fù)制(拷貝)數(shù)組的4種方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan

    Java復(fù)制(拷貝)數(shù)組的4種方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRa

    這篇文章主要介紹了Java復(fù)制(拷貝)數(shù)組的4種方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java如何獲取Object中Value

    Java如何獲取Object中Value

    在Java中,獲取Object中的值需依賴(lài)于對(duì)象的類(lèi)型和屬性,常用方法包括使用反射、getter方法、接口或抽象類(lèi)、Map等數(shù)據(jù)結(jié)構(gòu),本文給大家介紹Java如何獲取Object中Value,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Spring context:component-scan的使用及說(shuō)明

    Spring context:component-scan的使用及說(shuō)明

    這篇文章主要介紹了Spring context:component-scan的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java使用JDBC連接postgresql數(shù)據(jù)庫(kù)示例

    Java使用JDBC連接postgresql數(shù)據(jù)庫(kù)示例

    這篇文章主要介紹了Java使用JDBC連接postgresql數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式分析了jdbc連接postgresql數(shù)據(jù)庫(kù)及數(shù)值插入、更新、查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • idea如何配置springboot熱部署

    idea如何配置springboot熱部署

    這篇文章主要介紹了idea如何配置springboot熱部署問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

民乐县| 奉贤区| 五家渠市| 潜江市| 铁力市| 阿荣旗| 呼玛县| 博兴县| 锡林浩特市| 横山县| 即墨市| 黄冈市| 牙克石市| 剑阁县| 威宁| 益阳市| 泰来县| 凤庆县| 荆州市| 阳高县| 康平县| 通许县| 廉江市| 台南市| 吴桥县| 铜鼓县| 祥云县| 香河县| 南皮县| 农安县| 龙江县| 北票市| 朝阳县| 开原市| 邮箱| 临沭县| 剑河县| 敦煌市| 湾仔区| 桦南县| 苗栗市|