1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 数字转大写_Java把数字转换成中文大写数字

java 数字转大写_Java把数字转换成中文大写数字

时间:2024-03-02 03:55:20

相关推荐

java 数字转大写_Java把数字转换成中文大写数字

package com.chen.test;

public class TestChinese {

public static void main(String[] args) {

System.out.println(daxie_bf(2111112.91));

//输出结果-->贰佰壹拾壹万壹仟壹佰壹拾贰元玖角壹分

}

public static String daxie_bf(double amount){

boolean negative = false;

if (amount < 0.0D){

negative = true;

amount *= -1D;

}

long temp = Math.round(amount * 100D);

int numFen = (int)(temp % 10L);

temp /= 10L;

int numJiao = (int)(temp % 10L);

temp /= 10L;

int parts[] = new int[20];

int numParts = 0;

for (int i = 0; temp != 0L; i++){

int part = (int)(temp % 10000L);

parts[i] = part;

numParts++;

temp /= 10000L;

}

boolean beforeWanIsZero = true;

String chineseStr = "";

for (int i = 0; i < numParts; i++){

String partChinese = partTranslate(parts[i]);

if (i % 2 == 0)

if ("".equals(partChinese))

beforeWanIsZero = true;

else

beforeWanIsZero = false;

if (i != 0)

if (i % 2 == 0)

chineseStr = (new StringBuilder("亿")).append(

chineseStr).toString();

else

if ("".equals(partChinese) && !beforeWanIsZero){

chineseStr = (new StringBuilder("零")).append(

chineseStr).toString();

} else{

if (parts[i - 1] < 1000 && parts[i - 1] > 0)

chineseStr = (new StringBuilder("零")).append(

chineseStr).toString();

chineseStr = (new StringBuilder("万")).append(

chineseStr).toString();

}

chineseStr = (new StringBuilder(

String.valueOf(partChinese))).append(

chineseStr).toString();

}

if ("".equals(chineseStr))

chineseStr = chineseDigits[0];

else

if (negative)

chineseStr = (new StringBuilder("负")).append(

chineseStr).toString();

chineseStr = (new StringBuilder(

String.valueOf(chineseStr))).append("元").toString();

if (numFen == 0 && numJiao == 0)

chineseStr = (new StringBuilder(

String.valueOf(chineseStr))).append("整").toString();

else

if (numFen == 0)

chineseStr = (new StringBuilder(

String.valueOf(chineseStr))).append(

chineseDigits[numJiao]).append("角").toString();

else

if (numJiao == 0)

chineseStr = (new StringBuilder(

String.valueOf(chineseStr))).append("零").append(

chineseDigits[numFen]).append("分").toString();

else

chineseStr = (new StringBuilder(

String.valueOf(chineseStr))).append(

chineseDigits[numJiao]).append("角").append(

chineseDigits[numFen]).append("分").toString();

return chineseStr;

}

public static String chineseDigits[] = {

"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"

};

private static String partTranslate(int amountPart){

if (amountPart < 0 || amountPart > 0x5f5e100)

throw new IllegalArgumentException(

"参数必须是大于等于 0,小于 100000000 的整数!");

String units[] = {

"", "拾", "佰", "仟"

};

int temp = amountPart;

String amountStr = (new Integer(amountPart)).toString();

int amountStrLength = amountStr.length();

boolean lastIsZero = true;

String chineseStr = "";

for (int i = 0; i < amountStrLength; i++){

if (temp == 0)

break;

int digit = temp % 10;

if (digit == 0){

if (!lastIsZero)

chineseStr = (new StringBuilder("零")

).append(chineseStr).toString();

lastIsZero = true;

} else{

chineseStr = (new StringBuilder(

String.valueOf(chineseDigits[digit]))

).append(units[i]).append(chineseStr).toString();

lastIsZero = false;

}

temp /= 10;

}

return chineseStr;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。