金額轉漢字工具類

2021-09-27 13:07:49 字數 3485 閱讀 7540

/**

* 數字轉換為漢語中人民幣的大寫

* 2023年12月11日13:20:01

* 精確度:分-仟兆

*/public class numbertocnutils ;

/*** 小寫

*/private static final string cn_lower_number = ;

/*** 漢語中貨幣單位大寫,這樣的設計類似於佔位符

*/private static final string cn_upper_monetray_unit = ;

private static final string cn_lower_monetray_unit = ;

/*** 特殊字元:整

*/private static final string cn_full = "整";

/*** 特殊字元:負

*/private static final string cn_negative = "負";

/*** 金額的精度,預設值為2

*/private static final int money_precision = 2;

/*** 特殊字元:零元整

*/private static final string cn_zeor_full = "零元" + cn_full;

/*** 把輸入的金額轉換為漢語中人民幣的大寫(如果金額為整數後面會加『元整』 如133000: 壹拾叄萬叄仟元整)

* @param numberofmoney 輸入的金額

* @return 對應的漢語大寫

*/public static string number2cnmontrayunit(bigdecimal numberofmoney)

//這裡會進行金額的四捨五入

long number = numberofmoney.movepointright(money_precision)

.setscale(0, 4).abs().lon**alue();

// 得到小數點後兩位值

long scale = number % 100;

int numunit = 0;

int numindex = 0;

boolean getzero = false;

// 判斷最後兩位數,一共有四中情況:00 = 0, 01 = 1, 10, 11

if (!(scale > 0))

if ((scale > 0) && (!(scale % 10 > 0)))

int zerosize = 0;

while (true)

// 每次獲取到最後乙個數

numunit = (int) (number % 10);

if (numunit > 0)

if ((numindex == 13) && (zerosize >= 3))

sb.insert(0, cn_upper_monetray_unit[numindex]);

sb.insert(0, cn_upper_number[numunit]);

getzero = false;

zerosize = 0;

} else

if (numindex == 2)

} else if (((numindex - 2) % 4 == 0) && (number % 1000 > 0))

getzero = true;

}// 讓number每次都去掉最後乙個數

number = number / 10;

++numindex;

}// 如果signum == -1,則說明輸入的數字為負數,就在最前面追加特殊字元:負

if (signum == -1)

// 輸入的數字小數點後兩位為"00"的情況,則要在最後追加特殊字元:整

if (!(scale > 0))

return sb.tostring();

}/**

* 把阿拉伯數字轉換成漢字(只處理整數,沒有角和分;如果金額為整數後面不會加『元整』如133000:十三萬三千)

* @return 對應的漢語小寫

*/public static string number2cnlowerunit(bigdecimal numberofmoney)

//這裡會進行金額的四捨五入

long number = numberofmoney.movepointright(money_precision).setscale(0, 4).abs().lon**alue();

// 得到小數點後兩位值

long scale = number % 100;

int numunit = 0;

int numindex = 0;

boolean getzero = false;

// 判斷最後兩位數,一共有四中情況:00 = 0, 01 = 1, 10, 11

if (!(scale > 0))

if ((scale > 0) && (!(scale % 10 > 0)))

//對兩位數處理.

boolean flag1 = false;

boolean flag2 = false;

if(numberofmoney.compareto(new bigdecimal("99999"))==1&&numberofmoney.compareto(new bigdecimal("200000"))==-1)

if(numberofmoney.compareto(new bigdecimal("9"))==1&&numberofmoney.compareto(new bigdecimal("20"))==-1)

int zerosize = 0;

while (true)

// 每次獲取到最後乙個數

numunit = (int) (number % 10);

if (numunit > 0)

if ((numindex == 13) && (zerosize >= 3))

sb.insert(0, cn_lower_monetray_unit[numindex]);

sb.insert(0, (flag1&&numindex==7 || flag2&&numindex==3)?"":cn_lower_number[numunit]);

getzero = false;

zerosize = 0;

} else

if (numindex == 2)

} else if (((numindex - 2) % 4 == 0) && (number % 1000 > 0))

getzero = true;

}// 讓number每次都去掉最後乙個數

number = number / 10;

++numindex;

}return sb.tostring();

}}

漢字轉拼音工具類

public class pinyin4jutils 將字串轉換成拼音陣列 param src return public static string stringtopinyin string src,string separator 將字串轉換成拼音陣列 param src param ispo...

漢字轉拼音工具類

package com.example.demo.utils import net.sourceforge.pinyin4j.pinyinhelper author suyanlong date created in 2020 6 30 14 18 description ceshi version...

php 數字金額轉漢字大寫金額

數字金額轉漢字金額 測試 public function testnum 數字金額轉漢字金額 param float money 數字金額 param int type 已棄用 return string 漢字金額 public function numtormb money type 0 mone...