成都网站制作长沙,网站建设链接怎么加上去,自己弄个网站,最开放的浏览器java金额数字转中文
运行结果#xff1a; 会进行金额的四舍五入。
工具类源代码#xff1a;
/*** 金额数字转为中文*/
public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER {零, 壹, 贰,…java金额数字转中文
运行结果 会进行金额的四舍五入。
工具类源代码
/*** 金额数字转为中文*/
public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER {零, 壹, 贰, 叁, 肆,伍, 陆, 柒, 捌, 玖};/*** 汉语中货币单位大写这样的设计类似于占位符*/private static final String[] CN_UPPER_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;/*** 把输入的金额转换为汉语中人民币的大写** param numberOfMoney 输入的金额* return 对应的汉语大写*/public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {StringBuffer sb new StringBuffer();// -1, 0, or 1 as the value of this BigDecimal is negative, zero, or// positive.int signum numberOfMoney.signum();// 零元整的情况if (signum 0) {return CN_ZEOR_FULL;}//这里会进行金额的四舍五入long number numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue();// 得到小数点后两位值long scale number % 100;int numUnit 0;int numIndex 0;boolean getZero false;// 判断最后两位数一共有四中情况00 0, 01 1, 10, 11if (!(scale 0)) {numIndex 2;number number / 100;getZero true;}if ((scale 0) (!(scale % 10 0))) {numIndex 1;number number / 10;getZero true;}int zeroSize 0;while (true) {if (number 0) {break;}// 每次获取到最后一个数numUnit (int) (number % 10);if (numUnit 0) {if ((numIndex 9) (zeroSize 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);}if ((numIndex 13) (zeroSize 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);}sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);sb.insert(0, CN_UPPER_NUMBER[numUnit]);getZero false;zeroSize 0;} else {zeroSize;if (!(getZero)) {sb.insert(0, CN_UPPER_NUMBER[numUnit]);}if (numIndex 2) {if (number 0) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}} else if (((numIndex - 2) % 4 0) (number % 1000 0)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}getZero true;}// 让number每次都去掉最后一个数number number / 10;numIndex;}// 如果signum -1则说明输入的数字为负数就在最前面追加特殊字符负if (signum -1) {sb.insert(0, CN_NEGATIVE);}// 输入的数字小数点后两位为00的情况则要在最后追加特殊字符整if (!(scale 0)) {sb.append(CN_FULL);}return sb.toString();}public static void main(String[] args) {double money 2020004.0099999999;BigDecimal numberOfMoney new BigDecimal(money);String s NumberToCN.number2CNMontrayUnit(numberOfMoney);System.out.println(你输入的金额为【 money 】 #--# [ s.toString() ]);}}