金额转换

来源:互联网 发布:服务器 定时关机 软件 编辑:程序博客网 时间:2024/05/16 23:41

金额转换,阿拉伯数字的金额转换成中国传统的形式

例如输入:102030456

输出:壹亿零贰佰零叁万零肆佰伍拾陆元


代码示例:

public class  Test{private static final char[] data = new char[]{'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; private static final char[] units = new char[]{'元','拾','佰','仟','万','拾','佰','仟','亿'};public static String convert(int money){StringBuffer sbf = new StringBuffer();int unit = 0;while(money!=0){sbf.insert(0,units[unit++]);sbf.insert(0,data[money%10]);money /= 10;}return sbf.toString().replaceAll("零[拾佰仟]","零").replaceAll("零+万","万").replaceAll("零+元","元").replaceAll("零+","零");}public static void main(String[] args) {System.out.println(convert(102030456));}}


上边的例子是到亿级别的,下边介绍到兆级别



public class  Test{private static final char[] data = { '零','壹','贰','叄','肆', '伍','陆','柒', '捌', '玖' };private static final char[] units = { '圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','兆'};   public static String convert(long money) {   StringBuffer sbf = new StringBuffer();   if(money==0) return "零圆";int uint = 0;//插入单位角标while (money != 0) {    sbf.insert(0, units[uint++]);   sbf.insert(0, data[(int) (money % 10)]);   money = money / 10;   } return sbf.toString().replaceAll("零[仟佰拾]", "零").replaceAll("零+万", "万").replaceAll("零+亿", "亿").replaceAll("亿万", "亿零").replaceAll("兆亿", "兆零").replaceAll("零+", "零").replaceAll("零?圆","圆整");  }public static void main(String[] args) {  long num = 999999999;System.out.println(convert(num)); }}

输出:玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖圆整