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

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

实现类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

万亿级人民币大写精准转换的相关文章

腾讯万亿级分布式消息中间件TubeMQ正式开源

TubeMQ是腾讯在2013年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,经过近7年上万亿的海量数据沉淀,目前日均接入量超过25万亿条.较之于众多明星的开源MQ组件,TubeMQ在海量实践(稳定性+性能)和低成本方面有着比较好的核心优势. TubeMQ 捐赠 Apache 基金会 9月12日,Apache软件基金会成立20周年之际,腾讯在ApacheCon宣布TubeMQ 开源.TubeMQ 启动计划捐赠 Apache 基金会的流程. TubeMQ系统特点 1.

万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid

五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又能满足大数据量秒级查询的需求,系统架构如下图,基本实现了文章开头提出的几个目标. (点击放大图像) Tindex主要涉及的几个组件 Tindex-Segment,负责文件存储格式,包括数据的索引和存储,查询优化,以及段内数据搜索与实时聚合等.Tindex是基于Lucene的思想重构实现的,由于Luc

万亿级新风口又来了,特色小镇千万别建成了房地产项目

据媒体报道,近日,长城影视收购了9家旅行社.长城影视称,此次收购在服务于公司的文化娱乐板块,落实到影视基地的旅游延伸服务,通过对以IP为核心的衍生板块的扩张,促进板块间的良性互动和协同效应,提升公司的盈利能力.好吧,影视基地+旅游,又一个特色小镇的玩法出炉. 文/张书乐 TMT行业观察者.游戏产业时评人,人民网.人民邮电报专栏作者 新著有<微博运营完全自学手册> 其实,前不久,笔者自己也看到了特色小镇大风口在家乡的风起云涌.2017年中国企业家年会特别举办"千企千镇工程"走

Hbase万亿级存储性能优化总结

hbase主集群在生产环境已稳定运行有1年半时间,最大的单表region数已达7200多个,每天新增入库量就有百亿条,对hbase的认识经历了懵懂到熟的过程.为了应对业务数据的压力,hbase入库也由最初的单机多线程升级为有容灾机制的分布式入库,为及早发现集群中的问题,还开发了一套对hbase集群服务和应用全面监控的报警系统.总结下hbase优化(针对0.94版本)方面的一些经验也算对这两年hbase工作的一个描述. 服务端 1.hbase.regionserver.handler.count:

万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系

转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage 目前大数据存储查询方案大概可以分为:Hbase系.Dremel系.预聚合系.Lucene系,笔者就自身的使用经验说说这几个系

100万亿意味着什么?

有经济学家讲,通货膨胀是最隐秘的抢劫:哈耶克说过:"通货膨胀是由政府及其工作人员造成的,除此之外的任何人都不可能造成通货膨胀." 而著名经济学家许小年也曾分析称中国为什么要发行这么多货币?就是过高的经济增长目标无法实现,所以只要靠印钞票来拉动.这些话看上去很夸张,但却是事实真相. 假如你拥有100万亿元人民币,那意味着什么?恭喜你!这很可能意味着你发了大财.那么,假如一个国家拥有这么高的货币供应量,我们是不是也值得庆贺一番?错了,我想你会高兴不起来.央行公布数据显示,截至2012年年末

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

FastReport调用Delphi中的人民币大写转换自定义函数

FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; function StrTran(const S, s1, s2: string): string; begin Result := S

ORACLE数字转换人民币大写

ORACLE数字转换人民币大写     示例.   数字                        :            183066999230.68 人民币大写            :            壹仟捌佰参拾亿零陆仟陆佰玖拾玖万玖仟贰佰参拾圆陆角捌分   数字                        :            999900000000 人民币大写            :            玖仟玖佰玖拾玖亿圆整     Step 1.  Cre