import  java.math.BigDecimal; 

public   class  ConvertNumber  ... { 
  /** *//** 定义数组存放数字对应的大写 */ 

  private final static String[] STR_NUMBER = ...{ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; 

  /** *//** 定义数组存放位数的大写 */ 
  private final static String[] STR_MODIFY = ...{ "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" }; 

  /** *//** 
   * 转化整数部分 
   *  
   * @param tempString 
   * @return 返回整数部分 
   */ 
  private static String getInteger(String tempString) ...{ 
    /** *//** 用来保存整数部分数字串 */ 
    String strInteger = null;//  
    /** *//** 记录"."所在位置 */ 
    int intDotPos = tempString.indexOf("."); 
    int intSignPos = tempString.indexOf("-"); 
    if (intDotPos == -1) 
      intDotPos = tempString.length(); 
    /** *//** 取出整数部分 */ 
    strInteger = tempString.substring(intSignPos + 1, intDotPos); 
    strInteger = new StringBuffer(strInteger).reverse().toString(); 

    StringBuffer sbResult = new StringBuffer(); 
    for (int i = 0; i < strInteger.length(); i++) ...{ 
      sbResult.append(STR_MODIFY); 
      sbResult.append(STR_NUMBER[strInteger.charAt(i) - 48]); 
    } 

    sbResult = sbResult.reverse(); 

    replace(sbResult, "零拾", "零"); 
    replace(sbResult, "零佰", "零"); 
    replace(sbResult, "零仟", "零"); 
    replace(sbResult, "零万", "万"); 
    replace(sbResult, "零亿", "亿"); 

    replace(sbResult, "零零", "零"); 
    replace(sbResult, "零零零", "零"); 
    /** *//** 这两句不能颠倒顺序 */ 
    replace(sbResult, "零零零零万", ""); 
    replace(sbResult, "零零零零", ""); 
    /** *//** 这样读起来更习惯. */ 
    replace(sbResult, "壹拾亿", "拾亿"); 
    replace(sbResult, "壹拾万", "拾万"); 
    /** *//** 删除个位上的零 */ 
    if (sbResult.charAt(sbResult.length() - 1) == '零' && sbResult.length() != 1) 
      sbResult.deleteCharAt(sbResult.length() - 1); 

    if (strInteger.length() == 2) ...{ 
      replace(sbResult, "壹拾", "拾"); 
    } 
    /** *//** 将结果反转回来. */ 
    return sbResult.toString(); 
  } 

  /** *//** 
   * 转化小数部分 例:输入22.34返回叁肆 
   *  
   * @param tempString 
   * @return 
   */ 
  private static String getFraction(String tempString) ...{ 
    String strFraction = null; 
    int intDotPos = tempString.indexOf("."); 
    /** *//** 没有点说明没有小数,直接返回 */ 
    if (intDotPos == -1) 
      return ""; 
    strFraction = tempString.substring(intDotPos + 1); 
    StringBuffer sbResult = new StringBuffer(strFraction.length()); 

    for (int i = 0; i < strFraction.length(); i++) ...{ 
      sbResult.append(STR_NUMBER[strFraction.charAt(i) - 48]); 
    } 
    return sbResult.toString(); 
  } 

  /** *//** 
   * 判断传入的字符串中是否有.如果有则返回点 
   *  
   * @param tempString 
   * @return 
   */ 
  private static String getDot(String tempString) ...{ 
    return tempString.indexOf(".") != -1 ? "点" : ""; 
  } 

  /** *//** 
   * 判断传入的字符串中是否有-如果有则返回负 
   *  
   * @param tempString 
   * @return 
   */ 
  private static String getSign(String tempString) ...{ 
    return tempString.indexOf("-") != -1 ? "负" : ""; 
  } 

  /** *//** 
   * 将一个数字转化为金额 
   *  
   * @param tempNumber 传入一个double的变量 
   * @return 返一个转换好的字符串 
   */ 
  public static String numberToChinese(double tempNumber) ...{ 
    java.text.DecimalFormat df = new java.text.DecimalFormat("#.#########"); 
    String pTemp = String.valueOf(df.format(tempNumber)); 
    StringBuffer sbResult = new StringBuffer(getSign(pTemp) + getInteger(pTemp) + getDot(pTemp) + getFraction(pTemp)); 
    return sbResult.toString(); 
  } 

  public static String numberToChinese(BigDecimal tempNumber) ...{ 
    return numberToChinese(tempNumber.doubleValue()); 
  } 

  /** *//** 
   * 替代字符 
   *  
   * @param pValue 
   * @param pSource 
   * @param pDest 
   */ 
  private static void replace(StringBuffer pValue, String pSource, String pDest) ...{ 
    if (pValue == null || pSource == null || pDest == null) 
      return; 
    /** *//** 记录pSource在pValue中的位置 */ 
    int intPos = 0; 
    do ...{ 
      intPos = pValue.toString().indexOf(pSource); 
      /** *//** 没有找到pSource */ 
      if (intPos == -1) 
        break; 
      pValue.delete(intPos, intPos + pSource.length()); 
      pValue.insert(intPos, pDest); 
    } while (true); 
  } 

  /** *//** 
   * @param args 
   */ 

  public static void main(String[] args) ...{ 
    System.out.println(numberToChinese(1230400567.8934)); 
  } 

}

数字变成大写的类,把人民币转化为大写汉字相关推荐

  1. c语言人民币小写转换成大写,C语言实现人民币小写转大写

    这个是很早之前用C语言实现的人民币小写转大写的方法 /************************************************************************* ...

  2. 将金额人民币转化为大写 C#

    什么也不说了,直接上代码 1 /// <summary> 2 /// 转换人民币大小金额 3 /// </summary> 4 /// <param name=" ...

  3. python人民币小写转大写_Python小程序 -- 人民币小写转大写辅助工具

    大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考. 输入 ...

  4. python人民币小写转大写_Python小程序人民币小写转大写辅助工具

    大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考. 输入 ...

  5. 将阿拉伯数字转化成大写的人民币数字

    将阿拉伯数字转化成大写的人民币数字 public  String getNumberToRMB(String m) ... {      String num = "零壹贰叁肆伍陆柒捌玖&q ...

  6. php金额类,PHP类-人民币金额转大写

    这篇文章介绍的内容是关于PHP类-人民币金额转大写,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下<?php //人民币金额转大写程序PHP版 class Ext_Num2Cny{ ...

  7. 财务转换工具 - 人民币金额转大写工具类 java 版本

    文章目录 财务转换工具 - 人民币金额转大写工具类 java 版本 1.示例 2.代码 财务转换工具 - 人民币金额转大写工具类 java 版本 1.示例 public static void mai ...

  8. mysql大写数字转阿拉伯数字_阿拉伯数字转化为大写

    ``` //人民币金额转大写程序PHP版 //作者:大V[vsxp] $number = $_GET['num'] ? trim($_GET['num']) : 8421; echo Num2Cny: ...

  9. 将整型数字转化成大写格式

    将整型数字转化成大写格式 将整型数字转化成大写格式 我们日常报表的打印,单据打印,借据.收据打印等等操作都需要用到将金额装换成大写,防止交易双方通过修改单据数字,因而我们的信息管理系统就把账单的金额转 ...

最新文章

  1. Centos下通过SMTP发送邮件失败解决
  2. 第一方Cookie和第三方Cookie
  3. Python的一些小技巧小知识
  4. Chapter34 创建主窗口/实现应用程序功能
  5. MySQL分组查询—添加分组后筛选
  6. when is oPropagatedProperties of detail view being generated
  7. 作者:刘昂(1990-),男,中国科学院计算机网络信息中心工程师
  8. 学计算机专业的需要买电脑吗,高三党升级“准大一生”,有必要买电脑吗?学长的回答可以参考...
  9. 智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等
  10. 正则表达式 转义字符
  11. unity中使用本地数据库sqlite
  12. 计算机应用安装不了软件总被隔离,电脑安装软件时显示此程序被组策略阻止的解决方法...
  13. 如何提升抖音播放量?抖音上热门的技巧分享
  14. win10安装打印机操作无法完成0x0000007e找不到指定模块
  15. matlab中三视图如何画,[matlab 三维图]怎样把三维图导入到MATLAB
  16. 求分享如何给短视频加特效
  17. 蓝桥杯-算法训练-跳马
  18. 服务器运维事项,云服务器的运维工作要注意的事项
  19. numpy之多维数组
  20. 成为JAVA(高级)工程师,该学什么

热门文章

  1. java 中文分词转拼音_Java实现将汉字转化为汉语拼音的方法
  2. Why Functional Programming Matters 函数式程序设计为什么至关重要
  3. PXE+Kickstart 无人值守安装系统
  4. pad 锁定屏幕显示方向为竖屏正方向
  5. 序列到序列模型(一)(基本模型,RNN Search,注意力机制)
  6. 自然语言处理训练营NLP--笔记
  7. 小程序不用服务器可以上线吗?
  8. 编译器整数除法的优化
  9. MFC Windows 程序设计[253]之美丽的编辑搜索框(附源码)
  10. Excel2019选择数据后,指定数据作为x轴