数字转换为汉语中人民币的大写
2015-12-30 10:54
501 查看
Java中吧数字转换为人民币大写格式,网上有很多方法,现在这是跟据被人的方法改编的,更容易理解一些
package com.lm.util; public class Test { /** * 汉语中数字大写 */ private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; /** * 汉语中货币单位大写,这样的设计类似于占位符 */ private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" }; /** * 特殊字符:整 */ private static final String CN_FULL = "整"; /** * 把输入的金额转换为汉语中人民币的大写 * * @param numberOfMoney * 输入的金额 * @return 对应的汉语大写 */ public static String number2CNMontrayUnit(String str) { String headInteger = null;//整数部分 String endDecimal = null;//小数部分 if(str.contains(".")){ headInteger = str.substring(0, str.indexOf(".")); endDecimal = str.substring(str.indexOf(".") + 1); }else{ headInteger = str; } long headIntegerValue = (long) (Double.parseDouble(headInteger.trim())); int numUnit = 0; boolean getZero = false;//判断是否为零 String prefix = ""; // 整数部分转化的结果 String suffix = ""; // 小数部分转化的结果 // 处理小数点后面的数 if (null == endDecimal || endDecimal.equals("00") ) { suffix = CN_FULL; } else { //角位是零的 if(endDecimal.charAt(0) == '0'){ suffix = CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[0] + suffix ; }else if(endDecimal.charAt(1) == '0'){ suffix = suffix + CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[1]; }else{ suffix = CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[1] + CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[0]; } } //循环处理整数部分 for (int i = 0; i < headInteger.length(); i++) { numUnit = (int) (headIntegerValue % (10)); if(numUnit > 0){ prefix = CN_UPPER_NUMBER[numUnit] + CN_UPPER_MONETRAY_UNIT[i+2] + prefix ; getZero = false; }else{ if (!(getZero)) { prefix = CN_UPPER_MONETRAY_UNIT[i+2] + CN_UPPER_NUMBER[0] + prefix; } getZero = true; } headIntegerValue = headIntegerValue/10;//每次循环去掉最后一位 } return prefix + suffix; } public static void main(String[] args) { // String str = "100091654658.99"; String str = "10"; System.out.println(str); String number2cnMontrayUnit = Test.number2CNMontrayUnit(str); System.out.println(number2cnMontrayUnit); } }
相关文章推荐
- jQuery源码分析14--get与eq的区别
- IM架构资料收集
- LR检查点的if (status == LR_FAIL)写法
- 【转】Apache Solr 访问权限控制
- Mysql LIMIT如何正确对其进行优化
- 【译】一则故事:达到绝对安全的三个最佳措施
- iOS 录音
- Linux下Nagios的安装与配置
- 百度定位的实现
- TCP协议疑难杂症全景分析
- WebRTC VideoEngine超详细教程(一)——视频通话的基本流程
- Quartz应用与集群原理分析
- QQ 微信 第三方登录 分享
- C语言的函数类型
- pycharm最新版注册
- ubuntu 14.04 vim install youcompleteme
- 软件开发生命周期中测试的使用情况
- Android 广播大全 Intent Action 事件
- MapReuce-Join操作-初级优化
- webrtc windows工程下载包含sln以及编译介绍