java將金額轉成中文(java將金額轉換為大寫人民幣)

本文目錄一覽:

JAVA如何把鍵盤輸入的金額換轉成中文顯示。在線求解釋~~~

/**

 * 將10億以內的阿拉伯數字轉成漢字大寫形式

 * @author Hp

 * 

 */

public class TestNum {

  // 整數部分

  private String integerPart;

  // 小數部分

  private String floatPart;

  

  // 將數字轉化為漢字的數組,因為各個實例都要使用所以設為靜態

  private static final char[] cnNumbers={‘零’,’壹’,’貳’,’叄’,’肆’,’伍’,’陸’,’柒’,’捌’,’玖’};

  

  // 供分級轉化的數組,因為各個實例都要使用所以設為靜態

  private static final char[] series={‘元’,’拾’,’百’,’仟’,’萬’,’拾’,’百’,’仟’,’億’};

  

  /**

   * 構造函數,通過它將阿拉伯數字形式的字元串傳入

   * @param original

   */

  public TestNum(String original){ 

    // 成員變數初始化

    integerPart=””;

    floatPart=””;

    

    if(original.contains(“.”)){

      // 如果包含小數點

      int dotIndex=original.indexOf(“.”);

      integerPart=original.substring(0,dotIndex);

      floatPart=original.substring(dotIndex+1);

    }

    else{

      // 不包含小數點

      integerPart=original;

    }

  }

  

  /**

   * 取得大寫形式的字元串

   * @return

   */

  public String getCnString(){

    // 因為是累加所以用StringBuffer

    StringBuffer sb=new StringBuffer();

    

    // 整數部分處理

    for(int i=0;iintegerPart.length();i++){

      int number=getNumber(integerPart.charAt(i));

      

      sb.append(cnNumbers[number]);

      sb.append(series[integerPart.length()-1-i]);

    }

    

    // 小數部分處理

    if(floatPart.length()0){

      sb.append(“點”);

      for(int i=0;ifloatPart.length();i++){

        int number=getNumber(floatPart.charAt(i));

        

        sb.append(cnNumbers[number]);

      }

    }

    

    // 返回拼接好的字元串

    return sb.toString();

  }

  

  /**

   * 將字元形式的數字轉化為整形數字

   * 因為所有實例都要用到所以用靜態修飾

   * @param c

   * @return

   */

  private static int getNumber(char c){

    String str=String.valueOf(c);   

    return Integer.parseInt(str);

  }

  

  /**

   * @param args

   */

  public static void main(String[] args) {

    System.out.println(new TestNum(“123456789.12345”).getCnString());

    System.out.println(new TestNum(“123456789”).getCnString());

    System.out.println(new TestNum(“.123456789”).getCnString());

    System.out.println(new TestNum(“0.1234”).getCnString());

    System.out.println(new TestNum(“1”).getCnString());

    System.out.println(new TestNum(“12”).getCnString());

    System.out.println(new TestNum(“123”).getCnString());

    System.out.println(new TestNum(“1234”).getCnString());

    System.out.println(new TestNum(“12345”).getCnString());

    System.out.println(new TestNum(“123456”).getCnString());

    System.out.println(new TestNum(“1234567”).getCnString());

    System.out.println(new TestNum(“12345678”).getCnString());

    System.out.println(new TestNum(“123456789”).getCnString());

  }

}

java如何將數字轉為中文大寫

import org.apache.commons.lang3.StringUtils;

/**

* @Title: ConvertUpMoney

* @Description: 將數字金額轉換為大寫中文金額

* @date: 2019年6月18日 下午10:52:27

*/

public class ConvertUpMoney {

// 大寫數字

private static final String[] NUMBERS = {“零”,”壹”,”貳”,”叄”,”肆”,”伍”,”陸”,”柒”,”捌”,”玖”};

// 整數部分的單位

private static final String[] IUNIT = {“元”,”拾”,”佰”,”仟”,”萬”,”拾”,”佰”,”仟”,”億”,”拾”,”佰”,”仟”,”萬”,”拾”,”佰”,”仟”};

// 小數部分的單位

private static final String[] DUNIT = {“角”,”分”,”厘”};

/**

* 轉換為大寫的中文金額

* @param str 字元串類型的 金額數字

* @return

*/

public static String toChinese(String str) {

// 判斷輸入的金額字元串是否符合要求

if (StringUtils.isBlank(str) || !str.matches(“(-)?[\\d]*(.)?[\\d]*”)) {

return “抱歉,請輸入數字!”;

}

if(“0”.equals(str) || “0.00”.equals(str) || “0.0”.equals(str)) {

return “零元”;

}

// 判斷金額數字中是否存在負號”-“

boolean flag = false;

if(str.startsWith(“-“)){

// 標誌位,標誌此金額數字為負數

flag = true;

str = str.replaceAll(“-“, “”);

}

// 去掉金額數字中的逗號”,”

str = str.replaceAll(“,”, “”);

String integerStr;//整數部分數字

String decimalStr;//小數部分數字

// 初始化:分離整數部分和小數部分

if(str.indexOf(“.”)0) {

integerStr = str.substring(0,str.indexOf(“.”));

decimalStr = str.substring(str.indexOf(“.”) + 1);

}else if(str.indexOf(“.”)==0) {

integerStr = “”;

decimalStr = str.substring(1);

}else {

integerStr = str;

decimalStr = “”;

}

// beyond超出計算能力,直接返回

if(integerStr.length()IUNIT.length) {

return “超出計算能力!”;

}

// 整數部分數字

int[] integers = toIntArray(integerStr);

// 判斷整數部分是否存在輸入012的情況

if (integers.length1 integers[0] == 0) {

return “抱歉,輸入數字不符合要求!”;

}

// 設置萬單位

boolean isWan = isWan5(integerStr);

// 小數部分數字

int[] decimals = toIntArray(decimalStr);

// 返回最終的大寫金額

String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);

if(flag){

// 如果是負數,加上”負”

return “負” + result;

}else{

return result;

}

}

/**

* 將字元串轉為int數組

* @param number 數字

* @return

*/

private static int[] toIntArray(String number) {

int[] array = new int[number.length()];

for(int i = 0;inumber.length();i++) {

array[i] = Integer.parseInt(number.substring(i,i+1));

}

return array;

}

/**

* 將整數部分轉為大寫的金額

* @param integers 整數部分數字

* @param isWan 整數部分是否已經是達到【萬】

* @return

*/

public static String getChineseInteger(int[] integers,boolean isWan) {

StringBuffer chineseInteger = new StringBuffer(“”);

int length = integers.length;

if (length == 1 integers[0] == 0) {

return “”;

}

for(int i=0; ilength; i++) {

String key = “”;

if(integers[i] == 0) {

if((length – i) == 13)//萬(億)

key = IUNIT[4];

else if((length – i) == 9) {//億

key = IUNIT[8];

}else if((length – i) == 5 isWan) {//萬

key = IUNIT[4];

}else if((length – i) == 1) {//元

key = IUNIT[0];

}

if((length – i)1 integers[i+1]!=0) {

key += NUMBERS[0];

}

}

chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length – i -1]));

}

return chineseInteger.toString();

}

/**

* 將小數部分轉為大寫的金額

* @param decimals 小數部分的數字

* @return

*/

private static String getChineseDecimal(int[] decimals) {

StringBuffer chineseDecimal = new StringBuffer(“”);

for(int i = 0;idecimals.length;i++) {

if(i == 3) {

break;

}

chineseDecimal.append(decimals[i]==0?””:(NUMBERS[decimals[i]]+DUNIT[i]));

}

return chineseDecimal.toString();

}

/**

* 判斷當前整數部分是否已經是達到【萬】

* @param integerStr 整數部分數字

* @return

*/

private static boolean isWan5(String integerStr) {

int length = integerStr.length();

if(length 4) {

String subInteger = “”;

if(length 8) {

subInteger = integerStr.substring(length- 8,length -4);

}else {

subInteger = integerStr.substring(0,length – 4);

}

return Integer.parseInt(subInteger) 0;

}else {

return false;

}

}

// Test

public static void main(String[] args) {

String number = “12.56”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “1234567890563886.123”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “1600”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “156,0”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “-156,0”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “0.12”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “0.0”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “01.12”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “0125”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “-0125”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

number = “sdw5655”;

System.out.println(number+”: “+ConvertUpMoney.toChinese(number));

System.out.println(null+”: “+ConvertUpMoney.toChinese(null));

}

}

用java編譯金額的中文大寫轉換。

/**

* 金額小數轉換成中文大寫金額

* @author Neil Han

*

*/

public class ConvertMoneyToUppercase {

private static final String UNIT[] = { “萬”, “千”, “佰”, “拾”, “億”, “千”, “佰”,

“拾”, “萬”, “千”, “佰”, “拾”, “元”, “角”, “分” };

private static final String NUM[] = { “零”, “壹”, “貳”, “叄”, “肆”, “伍”, “陸”,

“柒”, “捌”, “玖” };

private static final double MAX_VALUE = 9999999999999.99D;

/**

* 將金額小數轉換成中文大寫金額

* @param money

* @return result

*/

public static String convertMoney(double money) {

if (money 0 || money MAX_VALUE)

return “參數非法!”;

long money1 = Math.round(money * 100); // 四捨五入到分

if (money1 == 0)

return “零元整”;

String strMoney = String.valueOf(money1);

int numIndex = 0; // numIndex用於選擇金額數值

int unitIndex = UNIT.length – strMoney.length(); // unitIndex用於選擇金額單位

boolean isZero = false; // 用於判斷當前為是否為零

String result = “”;

for (; numIndex strMoney.length(); numIndex++, unitIndex++) {

char num = strMoney.charAt(numIndex);

if (num == ‘0’) {

isZero = true;

if (UNIT[unitIndex] == “億” || UNIT[unitIndex] == “萬”

|| UNIT[unitIndex] == “元”) { // 如果當前位是億、萬、元,且數值為零

result = result + UNIT[unitIndex]; //補單位億、萬、元

isZero = false;

}

}else {

if (isZero) {

result = result + “零”;

isZero = false;

}

result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];

}

}

//不是角分結尾就加”整”字

if (!result.endsWith(“角”)!result.endsWith(“分”)) {

result = result + “整”;

}

//例如沒有這行代碼,數值”400000001101.2″,輸出就是”肆千億萬壹千壹佰零壹元貳角”

result = result.replaceAll(“億萬”, “億”);

return result;

}

public static void main(String[] args) {

double value = Double.parseDouble(“40330701101.2”);

System.out.println(“您輸入的金額(小寫)為:” + value);

System.out.println(“您輸入的金額(大寫)為:” + convertMoney(value));

}

}

原創文章,作者:OCWJZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127508.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OCWJZ的頭像OCWJZ
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相關推薦

  • 金額選擇性序列化

    本文將從多個方面對金額選擇性序列化進行詳細闡述,包括其定義、使用場景、實現方法等。 一、定義 金額選擇性序列化指根據傳入的金額值,選擇是否進行序列化,以達到減少數據傳輸的目的。在實…

    編程 2025-04-29
  • Python讀取中文

    Python是一種高級編程語言,被廣泛地應用於各種領域中。而處理中文數據也是其中重要的一部分。本文將介紹在Python中如何讀取中文,為大家提供指導和幫助。 一、讀取中文文件 在P…

    編程 2025-04-29
  • 使用FFmpeg在Java中將MP3 URL轉換為PCM

    本文介紹了使用FFmpeg在Java中將MP3 URL轉換為PCM的具體步驟,以及相應代碼示例。 一、準備工作 在使用FFmpeg之前,需要先安裝FFmpeg,可以在官網(http…

    編程 2025-04-29
  • jQuery Datatable分頁中文

    jQuery Datatable是一個非常流行的數據表插件,它可以幫助您快速地在頁面上創建搜索、過濾、排序和分頁的數據表格。不過,它的默認設置是英文的,今天我們就來探討如何將jQu…

    編程 2025-04-29
  • Python計算中文字元個數

    本文將從多個方面對Python計算中文字元個數進行詳細的闡述,包括字元串長度計算、正則表達式統計和模塊使用方法等內容。 一、字元串長度計算 在Python中,計算字元串長度是非常容…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字元,幫助Python3開發工程師更好的處理中文字元的問題。 一、Python3中文亂碼的原因 在Python3中,中文字元使用的…

    編程 2025-04-29
  • 從16進位轉義到中文字元

    16進位轉義是為了在不同的字符集、不同的編碼下,能夠保證特殊字元被正確的識別和渲染。本文將從多個方面對16進位轉義做詳細的闡述,讓讀者對其有更深入的了解。 一、轉義實現 在Web開…

    編程 2025-04-28
  • opendistroforelasticsearch-kibana的中文應用

    本文將介紹opendistroforelasticsearch-kibana在中文應用中的使用方法和注意事項。 一、安裝及配置 1、安裝opendistroforelasticse…

    編程 2025-04-28
  • Python IDLE如何設置中文運行環境

    Python IDLE是Python的集成開發環境,使用它可以方便地編寫、調試和執行Python程序。但是,默認情況下Python IDLE的運行環境是英文環境,如果需要在Pyth…

    編程 2025-04-27

發表回復

登錄後才能評論