编程实现金额转换
来源:互联网 发布:dota2第一滴血数据 编辑:程序博客网 时间:2024/05/17 02:10
金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾億零壹仟零壹拾圆整
package com.heima.question10;import static org.junit.Assert.assertEquals;import java.math.BigInteger;import org.junit.Test;/** * @author Alex Zhuang * */public class MoneyConvert {private static final char[] CHINESE_NUM = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; private static final char[] CHINESE_MONEY_UNIT = new char[] { '圆', '拾', '佰', '仟' }; private static final String[] CHINESE_MONEY_BIG_UNIT = new String[] { "万", "億" , "万" , "兆" };@Testpublic void test(){assertEquals("柒圆",convertToChinese("7"));assertEquals("壹仟零壹拾億壹仟零壹拾圆整",convertToChinese("101000001010"));assertEquals("壹仟贰佰叁拾肆兆伍仟陆佰柒拾捌万玖仟零壹拾贰億叁仟肆佰伍拾陆万柒仟捌佰玖拾圆整",convertToChinese("12345678901234567890"));assertEquals("壹仟兆圆整",convertToChinese("10000000000000000000"));assertEquals("贰万叁仟肆佰玖拾贰億捌仟柒佰叁拾肆万玖仟捌佰叁拾肆圆",convertToChinese("2349287349834"));}public static String convertToChinese(String moneyStr){if(moneyStr.length()<=20){BigInteger money = new BigInteger(moneyStr); StringBuilder sb = new StringBuilder(); int unitLevel=0; int bigUnitLevel=0;while(money.compareTo(BigInteger.ZERO)>0){/*将输入金额对10取余操作*/ int i = money.remainder(BigInteger.TEN).intValue(); if(unitLevel==4){ sb.insert(0, CHINESE_MONEY_BIG_UNIT[bigUnitLevel]); bigUnitLevel++; unitLevel=0;}else{/*当单位对应的数字不为零时才输出该单位*/if(i!=0){sb.insert(0, CHINESE_MONEY_UNIT[unitLevel]);/*判断该数字是否为个位数,如是则在字符数串后加圆*/}else if(bigUnitLevel==0&&unitLevel==0){sb.insert(0, CHINESE_MONEY_UNIT[unitLevel]);/*如果个位数的数字为零,则在最后面加字符'整' */if(i==0){sb.append('整');}}} sb.insert(0, CHINESE_NUM[i]); money=money.divide(BigInteger.TEN); unitLevel++; }String str = sb.toString();for(int i=0;i<4;i++){str=str.replaceAll("零兆", "兆");str=str.replaceAll("零億", "億");str=str.replaceAll("零万", "万");str=str.replaceAll("零圆", "圆");}str=str.replace("兆万億", "兆");str=str.replace("億万", "億");str=str.replace("兆万", "兆");return str;}else{return "输入金额过大,已达到或超过1万兆,无法转换";}}public static void main(String[] args){System.out.println("7="+convertToChinese("7"));System.out.println("101000001010="+convertToChinese("101000001010"));System.out.println("10000000000000000000="+convertToChinese("10000000000000000000"));System.out.println("12345678901234567890="+convertToChinese("12345678901234567890"));System.out.println("2349287349834="+convertToChinese("2349287349834"));}}
- 编程实现金额转换
- 金额转换函数实现
- java实现小写金额转换大写金额
- 金额转换,阿拉伯数字的金额转换成 面试编程题
- java 实现金额大小写转换
- 实现大小写金额的转换
- C语言编程:数字金额转换为中文大写金额
- 数字金额转换成中文金额(数据库实现)
- 数字金额转换成中文金额(C#实现)
- JS实现数字金额转换为大写金额
- 小写金额转换成大写金额(JAVA实现)
- java实现数字金额转换中文大写金额
- java实现数字金额转换成汉字大写金额
- 数字转换大写金额的实现
- 数字金额转换中文大写Java实现
- 金额转换中文大写的VBA实现
- 轻松实现人民币金额的大小写转换!
- C#实现金额转换中文格式源码~~
- 编写程序,拷贝一个带内容的文件夹
- C#的Lambda表达式
- C语言关键字auto、static、register、const、volatile、extern
- 在 drupal 下安装 FCKeditor 详解
- [非原创] 哈夫曼(Huffman )编码
- 编程实现金额转换
- Linux中用户管理详解(上)
- mssql游标的简单应用
- 如何把excel2003的表格导入到sql server 2000中
- 使用 Drools 规则引擎实现业务逻辑,可调试drl文件
- Linux的Logo修改
- web远程连接
- CentOS6.2部署mysql环境
- CSS —— 兼容各个浏览器的select的样式