1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 金额转换 阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟

金额转换 阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟

时间:2022-01-29 21:00:18

相关推荐

金额转换 阿拉伯数字转换成中国传统形式。例如:101000001010   转换为   壹仟

public class Test{

// 定义三个字符数组,把中文的数字形式存储下来,再下面代码中获取下标,设置对应中文

private static char[] hunit = { '拾', '佰', '仟' };

private static char[] vunit = { '万', '亿' };

private static char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒',

'捌', '玖' };

public static void main(String[] args) {

// 定义一个方法,转换数字成中国传统形式,用res接收

String res = numberChineseString(101000001010l);

// 打印转换结果

System.out.println(res);

}

private static String numberChineseString(long value) {

// 把该数字转换成字符串,方便计算小数点后的位数

String num = String.valueOf((long) (value * 100));

// 通过String中的截取字符串的方法,获取小数点前面的数字

String head = num.substring(0, num.length() - 2);

// 通过String中的截取字符串的方法,获取小数点后面的数字

String fina = num.substring(num.length() - 2);

// 定义两个字符串,分别存储转换的中文形式的金额

String headStr, finaStr;

// 定义方法处理钱中的小数点前面的整钱

headStr = handleHead(head);

// 定义方法处理钱中的 角和分

finaStr = handleFinall(fina);

// 返回转换成中文形式的金额字符串

return headStr + finaStr;

}

private static String handleHead(String head) {

// 定义字符串,暂时存储转换的金额

String headStr = "";

// 把金额字符串转换成字符数组,方便下面进一步判断

char[] headArray = head.toCharArray();

// 判断前一位是否的0

boolean preZero = false;

// 判断前面相邻的有几个0

int zeroCount = 0;

// 循环处理每个数字

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

// 取hunit数组下标

int hunitIndex = (headArray.length - i - 1) % 4;

// 取vunit数组下标

int vunitIndex = (headArray.length - i - 1) / 4;

// 如果循环到字符是一个0

if (headArray[i] == '0') {

// 把preZero置为true,同时zeroCount加1

preZero = true;

zeroCount++;

// 如果满足下面if中条件,则headStr加上vunit数组中对应的中文字符,同时把preZero置为false

if (hunitIndex == 0 && vunitIndex > 0 && zeroCount < 4) {

headStr = headStr + vunit[vunitIndex - 1];

preZero = false;

}

} else { // 当headArray[i]不等于0

zeroCount = 0;

// 如果preZero是true,表明该位是一个零,则headStr字符串加上"零",把preZero置为false

if (preZero) {

headStr = headStr + digit[0];

preZero = false;

}

// 根据循环到当前的字符,转换成数字,在digit数组中找到其对应的中文,例如字符串"1",转换成数字1,找到数组中digit[1]值'壹'

// 然后加入字符串headStr中

headStr = headStr + digit[Integer.parseInt(headArray[i] + "")];

// 如果hunitIndex大于0,则根据hunitIndex的数字减去1得到对应数字,该数字作为下标,找到hunit数组中对应的中文数字,

// 添加到headStr字符串中,

if (hunitIndex > 0) {

headStr = headStr

+ hunit[Integer.parseInt((hunitIndex - 1) + "")];

}

// 如果当hunitIndex等于0,同时vunitIndex大于0,则根据vunitIndex的值、数字减去1,该数字作为下标,

// 找到vunitIndex数组中对应的中文数字,添加到headStr字符串中

if (hunitIndex == 0 && vunitIndex > 0) {

headStr = headStr

+ vunit[Integer.parseInt((vunitIndex - 1) + "")];

}

}

}

// 加上单位

if (headStr.length() > 0) {

headStr = headStr + "圆";

}

// 返回部分最终转换成中文的数字

return headStr;

}

// 小数部分的处理

private static String handleFinall(String fina) {

String finaStr = "";

// 如果小数部分是两个0,则把加上一个“整”字,否则,小数点后一位加上“角”,小数后第二位加上“分”

if (fina.equals("00")) {

finaStr = "整";

} else {

finaStr = digit[Integer.parseInt(fina.charAt(0) + "")] + "角"

+ digit[Integer.parseInt(fina.charAt(0) + "")] + "分";

}

// 最终把小数部分的字符串返回

return finaStr;

}

}

金额转换 阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

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