`
caoxiaohui
  • 浏览: 13656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

金额 中文大写表示 转换方法

    博客分类:
  • java
F# 
阅读更多
/***
  * 金额 中文大写表示 转换方法,
  * 
  * @param input
  *            金额的字符串形式
  * @return
  */
 public static String convertCurrency(String input, String currency)
   throws Exception {
  String s1 = "零壹贰叁肆伍陆柒捌玖";
  String s4 = "分角整元拾佰仟万拾佰仟亿拾佰仟";
  String temp = "";
  String result = "";
  if (input == null) {
   input = "0";
  } else if (input.indexOf('-') == 0) {
   input = input.replaceAll("-", "");
  }
  temp = input.trim();
  float f = Float.parseFloat(temp);
  int len = 0;
  if (temp.indexOf(".") == -1)
   len = temp.length();
  else
   len = temp.indexOf(".");
  if (len > s4.length() - 3)
   return ("输入字串最大只能精确到仟亿,小数点只能两位!");
  int n1, n2 = 0;
  String num = "";
  String unit = "";
  for (int i = 0; i < temp.length(); i++) {
   if (i > len + 2) {
    break;
   }
   if (i == len) {
    continue;
   }
   n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));
   num = s1.substring(n1, n1 + 1);
   n1 = len - i + 2;
   unit = s4.substring(n1, n1 + 1);
   result = result.concat(num).concat(unit);
  }
  if ((len == temp.length()) || (len == temp.length() - 1))
   result = result.concat("整");
  if (len == temp.length() - 2)
   result = result.concat("零分");

  String regex1[] = { "零仟", "零佰", "零拾" };
  String regex2[] = { "零亿", "零万", "零元" };
  String regex3[] = { "亿", "万", "元" };
  String regex4[] = { "零角", "零分" };
  // 第一轮转换把 "零仟", 零佰","零拾"等字符串替换成一个"零"
  for (int i = 0; i < 3; i++) {
   result = result.replaceAll(regex1[i], "零");
  }
  // 第二轮转换考虑 "零亿","零万","零元"等情况
  // "亿","万","元"这些单位有些情况是不能省的,需要保留下来
  for (int i = 0; i < 3; i++) {
   // 当第一轮转换过后有可能有很多个零叠在一起
   // 要把很多个重复的零变成一个零
   result = result.replaceAll("零零零", "零");
   result = result.replaceAll("零零", "零");
   result = result.replaceAll(regex2[i], regex3[i]);
  }
  // 第三轮转换把"零角","零分"字符串省略
  for (int i = 0; i < 2; i++) {
   result = result.replaceAll(regex4[i], "");
  }

  // 对整数部分为零的处理
  if (result.length() > 1 && result.indexOf("元") == 0) {
   result = result.substring(1);
  } else if (result.equals("元")) {
   result = "零元";
  }
  return currency + result;
 }

 

分享到:
评论

相关推荐

    小写金额转大写转换器2020新版

    《小写金额转大写转换器2020新版》是一款专为财务人员设计的实用工具,主要用于将日常工作中常见的小写数字金额快速、准确地转换成大写汉字表示,以便于符合中国财务规范,特别是在开具发票和制作小票时确保金额的...

    oracle 数字金额转为汉字大写

    在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...

    C语言 金额转换大写

    ### C语言实现金额小写转大写的转换方法 在日常工作中,我们经常需要将数字金额转换成汉字大写形式,特别是在财务系统、银行系统或发票处理等场景中。本篇文章将详细解析一个C语言编写的函数`LowMoneyToUpper`,该...

    小写金额转换为大写金额

    在编程中,我们需要编写函数或程序来实现小写金额到大写金额的转换。这个过程涉及到数字与中文字符的对应关系,以及特定规则的应用。 转换规则如下: 1. **个位到十位**:0对应“零”,1对应“壹”,2对应“贰”,...

    金额大写转换(大写转换)

    金额大写转换的核心是将阿拉伯数字(如1、2、3...999,999,999)转化为对应的汉字大写(如壹、贰、叁...玖佰玖拾玖万玖仟玖佰玖拾玖元)。这种转换需要一个数字到汉字的大写映射表,并根据数字的位数来决定汉字的组合...

    FastReport小写金额转大写

    2. **构建大写数组**:创建一个字符串数组`s`,用于存储数字0到9对应的汉字大写表示。需要注意的是,这里的示例代码似乎没有正确地初始化这些值,实际应用中应替换为正确的汉字表示,例如“零”、“壹”、“贰”等。...

    C语言成序设计__实现人民币小写金额与大写金额的转换

    大写金额则使用中文数字和单位来表示,例如“壹佰零拾零万贰仟三佰零拾零元玖角零分”。在实现转换时,我们需要将小写金额的每一位数字提取出来,并将其转换为对应的大写金额数字。 在C语言中,我们可以使用数组和...

    金额阿拉伯数字转换中文大写(全)

    在IT领域,尤其是在财务软件开发或数据处理中,经常需要将阿拉伯数字金额转换为中文大写,以便在财务报表、发票或合同中清晰准确地表示金额。这是因为中文大写数字在金融交易中能减少因书写错误导致的混淆,增强财务...

    将金额转换成大写金额 封装类 及 例子

    在IT行业中,尤其是在财务软件开发或者银行系统的编程中,经常需要将数字金额转换为中文大写的表示形式,以便于财务报告、单据打印等场景。本文将深入探讨如何使用C#语言来封装一个类,实现将金额转换为大写金额的...

    Excel大写金额转换公式

    Excel的大写金额转换公式可以帮助我们快速、准确地将阿拉伯数字格式的金额转换为汉字大写的表示形式。以下是一些关键的知识点,涵盖了如何实现这一功能。 1. **基数转换**:首先,我们要理解的是,大写金额转换涉及...

    数字转换成金额大写

    在IT行业中,尤其是在财务软件开发或者自动化报表系统中,经常需要将数字转换成中文大写的金额形式,以便符合中国的财务规范。"数字转换成金额大写"是一个常见的需求,特别是在Delphi这样的编程环境中。Delphi是一款...

    大写金额转换器

    【大写金额转换器】是一种实用工具,专为金融、会计和商业领域的用户设计,能够将数字金额转换成中文大写形式。在处理财务文件、合同或者发票时,按照中国的传统,金额通常需要以中文大写来表示,以增强文档的清晰度...

    金额小写转汉字大写最好的方法

    1. **定义数字与单位映射**:首先,需定义两个数组,一个用于存储0至9的汉字大写表示,另一个用于存储不同数值单位(如分、角、元、拾、佰、仟等)。 ```cpp TCHAR* hzNum[10] = {_T("零"), _T("壹"), _T("贰"),...

    java 类 金额转换成大写

    Java 类金额转换成大写 在 Java 编程语言中,金额转换成大写是非常有用的功能,特别是在财务、银行、电子商务等领域中。下面我们来详细介绍如何使用 Java 实现金额转换成大写的功能。 实例代码分析 首先,我们来...

    人民币大写金额转换DLL库

    2. **人民币大写金额转换**:在金融和会计领域,为了防止篡改和增强账目的清晰度,通常会将数字金额用汉字大写表示。例如,数字"1234.56"会被转换成"壹仟贰佰叁拾肆元伍角陆分"。这个DLL库提供了这样的转换功能,...

    小写金额转大写金额(C++)

    要实现这个功能,首先我们需要创建一个映射表,将0-9这十个数字映射到它们对应的中文大写表示。然后,我们需要处理输入的金额字符串,考虑到金额通常包含逗号分隔的千位,我们可能需要先去除这些逗号,再进行转换。 ...

    将用罗马数字表示的金额转化为中文大写表示

    本篇文章将详细讲解如何将用罗马数字表示的金额转化为中文大写表示,主要关注Java编程语言实现这一功能的方法。 首先,我们需要理解罗马数字的基本规则。罗马数字通常使用七个符号来表示数字:I(1)、V(5)、X...

    易语言金额大写转换工具源码

    这个“易语言金额大写转换工具源码”是一个实用程序,它能够将数字金额转换成中文的大写形式,这对于财务报告、会计工作以及需要中文大写数字的场合非常有用。 在财务领域,为了防止篡改和提高准确性,通常会使用...

    易语言金额大写转换工具

    这个工具通过内部的转换规则和逻辑,可以快速将用户输入的阿拉伯数字转化为对应的汉字大写形式,大大提高了工作效率。 接着,我们提到的“仿QQ效果”,是指软件在界面设计上借鉴了QQ的风格,使用户在操作过程中感到...

    如何实现金额大写转换Visual Basic6.0源程序,VB6.0源代码

    通过上述方法,你可以在VB6.0中实现一个简单的金额大写转换程序,帮助财务人员方便地处理日常工作中涉及的数字与汉字金额的转换需求。这个功能也可以扩展到其他编程语言,核心思想是相同的,只是语法和库的使用会...

Global site tag (gtag.js) - Google Analytics