50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > Java 人名币转大写

Java 人名币转大写

时间:2020-08-09 08:18:46

相关推荐

Java 人名币转大写

public class AmountInWordsUtils {private static final String[] BIG_UNIT = {"", "万", "亿"};private static final String[] SMALL_UNIT = {"", "拾", "佰", "仟"};private static final String[] UP_NUM = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};public static void main(String[] args) {BigDecimal inputMoney = new BigDecimal("1000009.32");String result = toChinese(inputMoney);System.out.println(result);}public static String toChinese(BigDecimal inputMoney) {StringBuilder result = new StringBuilder();// 处理整数部分long integerPart = inputMoney.setScale(0, RoundingMode.DOWN).longValue();if (integerPart == 0) {result.append("零元");} else {result.append(convert(integerPart)).append("元");}// 处理小数部分long decimalPart = inputMoney.movePointRight(2).setScale(0, RoundingMode.DOWN).longValue() % 100;if (decimalPart == 0) {result.append("整");} else {String s = String.valueOf(decimalPart);result.append(UP_NUM[s.charAt(0) - '0']).append("角");result.append(UP_NUM[s.charAt(1) - '0']).append("分");}return result.toString();}private static String convert(long num) {StringBuilder result = new StringBuilder();// 按照万、亿的单位进行转换int bigIdx = 0;while (num > 0) {long temp = num % 10000;if (temp > 0) {result.insert(0, BIG_UNIT[bigIdx]);}result.insert(0, convert4(temp));num /= 10000;bigIdx++;}// 去掉前导的零while (result.length() > 1 && result.charAt(0) == UP_NUM[0].charAt(0)) {result.deleteCharAt(0);}return result.toString();}private static String convert4(long num) {StringBuilder result = new StringBuilder();// 按照拾、佰、仟的单位进行转换int smallIdx = 0;while (num > 0) {long digit = num % 10;if (digit > 0) {result.insert(0, SMALL_UNIT[smallIdx]);result.insert(0, UP_NUM[(int) digit]);}num /= 10;smallIdx++;}// 去掉前导的零while (result.length() > 1 && result.charAt(0) == UP_NUM[0].charAt(0)) {result.deleteCharAt(0);}return result.toString();}}

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