`
chaochaoyuyu
  • 浏览: 54528 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

浮点数转换为人民币读法(续)

 
阅读更多
import java.math.BigDecimal;

public class ConvertNum {
  /** 定义数组存放数字对应的大写 */
  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[i]);
      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,intDotPos+3);
    StringBuffer sbResult = new StringBuffer(strFraction.length());
    for (int i = 0; i < strFraction.length(); i++) {
    	if(i==0){
    		sbResult.append(STR_NUMBER[strFraction.charAt(i) - 48]+"角");
    	}else {
    		sbResult.append(STR_NUMBER[strFraction.charAt(i) - 48]+"分");
		}      
    }
    return sbResult.toString();
  } 
  

  /**
   * 将一个数字转化为金额
   * 
   * @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(getInteger(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(3012.234));
  }
}
 
分享到:
评论

相关推荐

    疯狂Java讲义 浮点数转换成人民币读法

    在IT领域,尤其是在编程实践中,将浮点数转换为人民币读法是一项常见的需求。这涉及到数值处理、格式化以及本地化等技术。《疯狂Java讲义》是一本深入讲解Java编程的经典教材,其中涵盖了许多实战性的编程问题。在这...

    浮点数转换为汉文字符串

    实现把不超过12位整数的浮点数转换为中文读法的字符串并保留两位小数

    把数学数字转换为人民币读法(很好的设计思想)

    这个“把数学数字转换为人民币读法”的问题就是一个很好的设计思想的例子,它涉及到自然语言处理、字符串操作以及数字与文本之间的转换。我们将探讨如何使用C#来实现这个功能。 首先,人民币的读法有一定的规则,如...

    将数字转化为人民币读法的小程序

    将浮点数转化为人民币读法的字符串。如1006.333转为壹仟零陆元三角三分。

    Java 数字转换成中文读法

    在编程领域,尤其是在Java开发中,有时我们需要将数字转换成中文读法,以便于用户更加直观地理解数据。这个需求通常出现在财务、报表或者人机交互界面等场景。标题所提及的问题是:“Java设计输入‘12345’显示‘一...

    《疯狂java讲义》课后习题之数字转人民币读法(附源码)

    题目:输入一串数字,转成人民币读法输出 例: 输入:12345678.908 输出:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角零捌厘 实现该功能要解决如下几个问题: 1、输入有效性检查 2、数字转中文 3、零的特殊处理 关于零...

    人民币小写转为大写读法

    把小写的人民币读法转为大写读法的方法。

    中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告.docx

    人民币数字大写转换软件是一个将数字转换为大写人民币的工具,用户可以输入数字,然后软件将其转换为大写人民币。该软件具有以下功能: * 将数字转换为大写人民币 * 支持多种数字格式的输入 * 可以根据用户的需求...

    数字金额转汉字的读法(java代码)

    在IT行业中,尤其是在软件开发领域,经常会遇到将数字金额转换为汉字表示的需求,这在财务系统、报表或者用户界面中尤为常见。这个需求涉及到的是数字处理和字符串操作的知识点,通常可以通过编程语言来实现。本例中...

    字符串转换为RMB读法(自己参考之后写的)

    课后习题 欢迎下载 还是比较完善的

    java阿拉伯数字转换成中文传统读法

    在编程领域,尤其是在Java开发中,有时我们需要将阿拉伯数字(1, 2, 3等)转换为中文的传统读法(如“一”,“二”,“三”)。这个任务涉及到字符串处理、数字转换以及对中文字符的理解。在本文中,我们将深入探讨...

    PB数字人民币金额发音程序(源码)

    在本项目中,"PB数字人民币金额发音程序(源码)"是一个利用PowerBuilder编写的程序,其主要功能是将输入的数字转换为对应的中文人民币金额读法,精确到角分。这个程序对于财务系统、银行应用或者任何需要语音播报...

    黑盒测试(人民币数字转大写) 实验报告

    2. **“人民币”标识**:转换结果需包含“人民币”字样,且“分”后不加“整”或“正”。 3. **格式紧密无空格**:大写金额紧随“人民币”字样,避免出现空格。 4. **零的特殊处理**:小写数字中的“0”需根据汉语...

    数字运算中数符的各种英文读法

    根据给定文件的信息,本文将详细介绍在数字运算中数符的各种英文读法,这对于从事数学英语教学的朋友来说具有很高的参考价值。以下是对该文件中提到的关键知识点进行详细解读。 ### 数学英语读法概述 首先,文件...

    Chinese:中文解析通用工具。包括拼音,简繁转换,数字读法,货币读法

    包括拼音,简繁转换,数字读法,货币读法。 安装 通过Nuget使用.NET CLI安装: dotnet add package Chinese 版本更新 v0.3.5 : 可移除对Microsoft Visual Studio International Pack 1.0 Service的依赖; 拼音解析...

    常见数学符号的英文读法

    在工程科技文献中常见的数学符号的英文读法整理

    多位数读法歌.pdf

    在教育领域,尤其是在数学教学中,正确地读取多位...总的来说,"多位数读法歌"是教育领域中一种有效的教学策略,它将复杂的数学概念转化为易于理解的韵文,使学生在愉快的氛围中掌握读数技巧,对提升数学素养大有裨益。

    日语数字读法总结(各种时间下数字的读法)

    在学习日语的过程中,了解数字的读法是基础且重要的环节。日语数字的读法在不同的上下文...同样的,表示时间的“分钟”在口语中有时会被简化为“ぷん”。通过不断地实践和听力训练,可以更好地理解和运用这些数字表达。

    数学符号读法大全

    《数学符号读法大全》是一份详尽的数学符号指南,涵盖了从基础到高级的各种数学符号及其读音,对于数学研究者以及论文撰写者来说,是不可或缺的参考资料。以下是一些主要数学符号的解读和应用: 1. **等价符号**:`...

    变“讲课文”为“教读法” .docx

    《变“讲课文”为“教读法”》这篇文章探讨了语文教学中从传统的“讲课文”模式转向“教读法”的重要性及其实施策略。文章指出,教学方法的改革对于教学内容有着深远影响,特别是在语文教学领域。自1978年以来,我国...

Global site tag (gtag.js) - Google Analytics