近期因工程需要实现人民币大写转换,本来想这已经是一个古老的话题了,互联网上应当有成熟的答案,但是没想到,下载了十来个范例,没有一个令人满意。有些点击数万次的范例,确糟糕的难以想象。一个看似简单的问题,其实并不简单,因此,不得不花两天时间,对这个小小的问题作了深入的研究,设计了数个算法,最后只保留了一个方法。
实现类cn.jadepool.util.CastRMB,支持亿万元级人民币大写的精准转换。源代码已经打包在jadepool-1-2-GBK.zip资源文件中,可以通过以下链接http://download.csdn.net/download/wj800/8157455下载。
以下是测试结果:
/* *TestRMB *胡开明 *2014-11-14 * * 万亿级人民币大写精准转换 * 需要jadepool-1.2-GBK.jar的支持 * 原代码CastRMB.java已经添加到jadepool-1.2-GBK资源文件中 */ package test.rmb; import cn.jadepool.util.CastRMB; import java.math.BigDecimal; /** * 万亿级人民币大写精准转换测试 * * @author hkm */ public class TestRMB { public static void main(String[] args) { CastRMB rmb = new CastRMB(); System.out.println(rmb.cast("0.00"));//零元整 System.out.println(rmb.cast(".004"));//零角零分肆厘 System.out.println(rmb.cast("31000.00"));//叁万壹仟元整 System.out.println(rmb.cast("400008.00"));//肆拾万零捌元整 System.out.println(rmb.cast("500001000.56"));//伍亿壹仟元伍角陆分 System.out.println(rmb.cast("60090001000.002"));//陆佰亿玖仟万壹仟元零角零分贰厘 System.out.println(rmb.cast("700009001000.002"));//柒仟亿零玖佰万壹仟元零角零分贰厘 System.out.println(rmb.cast("8701234501678.569"));//捌万柒仟零壹拾贰亿叁仟肆佰伍拾万壹仟陆佰柒拾捌元伍角陆分玖厘 System.out.println(rmb.cast("9000000000000.000"));//玖万亿元整 System.out.println(new BigDecimal(Integer.MAX_VALUE));//2147483647 System.out.println(rmb.cast(new BigDecimal(Integer.MAX_VALUE)));//贰拾壹亿肆仟柒佰肆拾捌万叁仟陆佰肆拾柒元整 System.out.println(new BigDecimal(Long.MAX_VALUE / 1000000));//9223372036854 System.out.println(rmb.cast(new BigDecimal(Long.MAX_VALUE / 1000000)));//玖万贰仟贰佰叁拾叁亿柒仟贰佰零叁万陆仟捌佰伍拾肆元整 } }
时间: 2024-10-04 22:00:39