万亿级人民币大写精准转换

近期因工程需要实现人民币大写转换,本来想这已经是一个古老的话题了,互联网上应当有成熟的答案,但是没想到,下载了十来个范例,没有一个令人满意。有些点击数万次的范例,确糟糕的难以想象。一个看似简单的问题,其实并不简单,因此,不得不花两天时间,对这个小小的问题作了深入的研究,设计了数个算法,最后只保留了一个方法。

实现类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)));//玖万贰仟贰佰叁拾叁亿柒仟贰佰零叁万陆仟捌佰伍拾肆元整
    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值