java中人民币金额转换

    技术2025-09-05  17

    金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

    public class RenMinBi { private static final char[] data = new char[]{ '零','壹','贰','叁','肆','伍','陆','柒','捌','玖' }; private static final char[] units = new char[]{ '元','拾','佰','仟','万','拾','佰','仟','亿' }; public static void main(String[] args) { // TODO Auto-generated method stub System.out.println( convert(135689123)); } public static String convert(int money) { StringBuffer sb = new StringBuffer(); int unit = 0; while(money!=0) { sb.insert(0,units[unit++]); System.out.println(sb); int number = money%10;//求最后一位数 System.out.println("number:"+number); sb.insert(0, data[number]); System.out.println(sb); money /= 10;//去掉数值的后一位 System.out.println("money:"+money); } return sb.toString(); } } 

    为了能够说明整个问题,在程序里面加入了一些打印的信息,从打印的信息里面就非常清楚的说明了程序的执行流程和原理:

     

    number:3

    叁元

    money:13568912

    拾叁元

    number:2

    贰拾叁元

    money:1356891

    佰贰拾叁元

    number:1

    壹佰贰拾叁元

    money:135689

    仟壹佰贰拾叁元

    number:9

    玖仟壹佰贰拾叁元

    money:13568

    万玖仟壹佰贰拾叁元

    number:8

    捌万玖仟壹佰贰拾叁元

    money:1356

    拾捌万玖仟壹佰贰拾叁元

    number:6

    陆拾捌万玖仟壹佰贰拾叁元

    money:135

    佰陆拾捌万玖仟壹佰贰拾叁元

    number:5

    伍佰陆拾捌万玖仟壹佰贰拾叁元

    money:13

    仟伍佰陆拾捌万玖仟壹佰贰拾叁元

    number:3

    叁仟伍佰陆拾捌万玖仟壹佰贰拾叁元

    money:1

    亿叁仟伍佰陆拾捌万玖仟壹佰贰拾叁元

    number:1

    壹亿叁仟伍佰陆拾捌万玖仟壹佰贰拾叁元

    money:0

    壹亿叁仟伍佰陆拾捌万玖仟壹佰贰拾叁元

    感觉这种处理的方式和之前在Android上计算文件大小时用到的处理文件大小的思路是一样的,都是采用了除以某个数的形式:

    private static String formatFileSize(long filesize) { DecimalFormat df = new DecimalFormat("#.##"); if (filesize >= 1024d * 1024d * 0.8d) return df.format(filesize / (1024d * 1024d)) + "M"; else if (filesize >= 1024d * 0.8d) return df.format(filesize / 1024d) + "K"; else if (filesize == 0) return df.format(filesize) + "Byte"; return df.format(filesize) + "Bytes"; } 

     

    最新回复(0)