package com.sunboon.jiexi;  /** *  * @author qizhenglong *  */
public class MoneyUtil {  /** 大写数字 */  private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍",  "陆", "柒", "捌", "玖" };  /** 整数部分的单位 */  private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",  "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };  /** 小数部分的单位 */  private static final String[] DUNIT = { "角", "分", "厘" };  /** * 得到大写金额。 */  public static String toChinese(String str) {  str = str.replaceAll(",", "");// 去掉","  String integerStr;// 整数部分数字  String decimalStr;// 小数部分数字  // 初始化:分离整数部分和小数部分  if (str.indexOf(".") > 0) {  integerStr = str.substring(0, str.indexOf("."));  decimalStr = str.substring(str.indexOf(".") + 1);  } else if (str.indexOf(".") == 0) {  integerStr = "";  decimalStr = str.substring(1);  } else {  integerStr = str;  decimalStr = "";  }  // integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去)  if (!integerStr.equals("")) {  integerStr = Long.toString(Long.parseLong(integerStr));  if (integerStr.equals("0")) {  integerStr = "";  }  }  // overflow超出处理能力,直接返回  if (integerStr.length() > IUNIT.length) {  System.out.println(str + ":超出处理能力");  return str;  }  int[] integers = toArray(integerStr);// 整数部分数字  boolean isMust5 = isMust5(integerStr);// 设置万单位  int[] decimals = toArray(decimalStr);// 小数部分数字  return getChineseInteger(integers, isMust5)  + getChineseDecimal(decimals);  }  /** * 整数部分和小数部分转换为数组,从高位至低位 */  private static int[] toArray(String number) {  int[] array = new int[number.length()];  for (int i = 0; i < number.length(); i++) {  array[i] = Integer.parseInt(number.substring(i, i + 1));  }  return array;  }  /** * 得到中文金额的整数部分。 */  将夜www.jiangyea.comprivate static String getChineseInteger(int[] integers, boolean isMust5) {  StringBuffer chineseInteger = new StringBuffer("");  int length = integers.length;  for (int i = 0; i < length; i++) {  // 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)  // 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)  String key = "";  if (integers[i] == 0) {  if ((length - i) == 13)// 万(亿)(必填)  key = IUNIT[4];  else if ((length - i) == 9)// 亿(必填)  key = IUNIT[8];  else if ((length - i) == 5 && isMust5)// 万(不必填)  key = IUNIT[4];  else if ((length - i) == 1)// 元(必填)  key = IUNIT[0];  // 0遇非0时补零,不包含最后一位  if ((length - i) > 1 && integers[i + 1] != 0)  key += NUMBERS[0];  }  chineseInteger.append(integers[i] == 0 ? key  : (NUMBERS[integers[i]] + IUNIT[length - i - 1]));  }  return chineseInteger.toString();  }  /** * 得到中文金额的小数部分。 */  private static String getChineseDecimal(int[] decimals) {  StringBuffer chineseDecimal = new StringBuffer("");  for (int i = 0; i < decimals.length; i++) {  // 舍去3位小数之后的  if (i == 3)  break;  chineseDecimal.append(decimals[i] == 0 ? ""  : (NUMBERS[decimals[i]] + DUNIT[i]));  }  return chineseDecimal.toString();  }  /** * 判断第5位数字的单位"万"是否应加。 */  private static boolean isMust5(String integerStr) {  int length = integerStr.length();  if (length > 4) {  String subInteger = "";  if (length > 8) {  // 取得从低位数,第5到第8位的字串  subInteger = integerStr.substring(length - 8, length - 4);  } else {  subInteger = integerStr.substring(0, length - 4);  }  return Integer.parseInt(subInteger) > 0;  } else {  return false;  }  }  public static void main(String[] args) {  MoneyUtil moneyUtil = new MoneyUtil();  System.out.println(moneyUtil.toChinese("5000.23"));  }  } 

java实现小写金额转换大写金额相关推荐

  1. 无限位小写金额转换大写金额(修订版)

    说明: 1.本程序用JavaScript语言编写.转换方法严格遵照中国人民银行规定的银行支票中关于金额数字中文大写填写规范的相关规定(见下面附文),规定中两可之处按简便方法处理. 2.输入小写金额原则 ...

  2. Java工具包:小写金额转换成大写金额

    源代码如下 package com.jian.stringUtil;/*** 工具类:小写金额转换成大写金额* * @author jianxuanbing* */ @SuppressWarnings ...

  3. 使用javabean把小写金额转换成大写金额

    public static void main(String[] args) {moneyConversion mc=new moneyConversion();String money=" ...

  4. 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)

    写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...

  5. win7计算机名改成大写,图文解读win7系统excel数字小写金额转换成汉字大写金额的措施...

    有很多网友在使用电脑的过程总难免会遇到win7系统excel数字小写金额转换成汉字大写金额的情况.针对win7系统excel数字小写金额转换成汉字大写金额的问题,我给大家整理总结了详细的解决步骤.近日 ...

  6. PB中小写金额转换成大写金额(发票类型)

    PB中小写金额转换成大写金额 //================================================================= // 功能:小写金额转换成大写金额 ...

  7. 小写金额转换成大写金额的函数

    编写一个收费软件时要用到一个小写金额转换成大写金额的函数,我曾在网上找到一个用Powerbuilder写的函数,长达四五十行之巨,后来我自己用DELPHI写了一个函数,寥寥几行代码就搞定: funct ...

  8. 人民币小写金额转大写金额

    #region 人民币小写金额转大写金额/// <summary>/// 小写金额转大写金额/// </summary>/// <param name="Mon ...

  9. 人民币 小写金额转换为大写金额

    人民币 小写金额转换为大写金额 标签(空格分隔): 人民币 小写金额转换为大写金额 jsp: div class="form-group"> <label class= ...

  10. 小写数字转大写_不得不说的Excel小技巧:设置单元格格式将小写金额转换成大写...

    大家好,我是小秋,近期一段时间比较忙,没有在今日头条上更新原创文章了.希望朋友们多多见谅,下面与大家分享一个Excel实用小技巧:如何设置单元格格式将小写金额转换成大写? 1.应用场景 在报销单.收据 ...

最新文章

  1. 资源 | 10x Python开发者必读:本月Python文章TOP 10
  2. mysql 集群 备份_mysql cluster集群备份还原
  3. mysql自定义序号_MySQL数据库之在mysql中给查询的结果添加序号列
  4. TensorFlow基于cifar10数据集实现进阶的卷积网络
  5. 跟着JAMA论文学习重复测量资料分析方法
  6. python提取pdf表格信息
  7. MVC实战之排球计分(六)—— 使用EF框架,创建Controller,生成数据库。
  8. 求字符串的最小正周期
  9. 计算机仿真期末考试,2015年数学物理建模期末考试试题.docx
  10. 支付宝小程序人脸识别认证
  11. Snipaste操作指南
  12. wmp搭建PHP,教你如何使用WIN7自带的WMP实现媒体共享
  13. 赠书 001 | 人啊。认识你自己
  14. 【渝粤教育】国家开放大学2018年春季 7389-21T劳动与社会保障法 参考试题
  15. 2021-1-1今日新闻简报 每天精选12条最新时事热点新闻摘要和1条微语
  16. 极验3forbidden,易盾d包
  17. 栈(stack)C语言实现(有详细注释讲解)
  18. 设计师们书签里的设计素材精品网站
  19. html中奇数偶数判断,js中判断奇数或偶数
  20. 支持向量机(SVM)之核函数

热门文章

  1. 应用计算机测pn结正向电压,PN结正向压降与温度关系的研究实验报告
  2. 4 卷积的拉普拉斯变换
  3. 百度地图兴趣点抓取工具
  4. Mini2440开发板串口连接
  5. 【Java】用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序由4个类,名字分别是PC、CPU、HardDisk、和Test,其中Test是主类。
  6. 【数据分析】最常用的数据分析方法(干货)
  7. 《ERP原理》期末复习——第一章 初识ERP(企业资源计划)
  8. 自己开发的一套实用故障报修管理系统【分享推荐大家】
  9. 类模板 Class Templates
  10. 怎么做手机App测试?app测试详细流程和方法介绍