<!---->package org.phyeas.demo.number;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumberToRMB {
private static String[] UNIT = { "元", "万", "亿" };
private static String[] UNIT2 = { "千", "百", "十" };
private static final String ZERO = "零";
private static String[] NUM = { "壹", "贰", "三", "肆", "伍", "陆", "柒", "捌",
"玖", "拾" };
/**
* 转换一串字符
*
* @param str
* @return
*/
public static String parseCharsToRMB(String str) {
if (!isNumber(str)) {
throw new IllegalArgumentException("参数不正确,必须为数字");
}
StringBuffer buffer = new StringBuffer();
int count = 0;
for (int i = str.length(); i > 0; i -= 4, count++) {
String char4 = null;
if (i - 4 < 0) {
System.out.println("start=" + 0 + ".end=" + i);
char4 = str.substring(0, i);
buffer.insert(0, parse4CharsToRMB(char4) + UNIT[count]);
break;
}
System.out.println("start=" + (i - 4) + ".end=" + i);
char4 = str.substring(i - 4, i);
buffer.insert(0, parse4CharsToRMB(char4) + UNIT[count]);
}
return buffer.toString();
}
/**
* 转换4位字符
*
* @param str
* @return
*/
public static String parse4CharsToRMB(String str) {
if (str.length() > 4 || !isNumber(str)) {
throw new IllegalArgumentException("参数不正确,str应该为不大于4位的字符");
}
StringBuffer result = new StringBuffer();
int startUNIT = getStartUNIT(str.length());
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '0') {
if (i == 0) {
result.append(ZERO);
} else {
appendZero(result, i);
}
startUNIT++;
} else {
int index = Integer.parseInt(String.valueOf(str.charAt(i))) - 1;
result.append(NUM[index]);
if (startUNIT < UNIT2.length) {
result.append(UNIT2[startUNIT]);
startUNIT++;
}
}
}
return result.toString();
}
/**
* 获取起始位置
*
* @param strLength
* @return
*/
public static int getStartUNIT(int strLength) {
switch (strLength) {
case 4:
return 0;
case 3:
return 1;
case 2:
return 2;
case 1:
return 3;
default:
return 0;
}
}
/**
* 0是特殊的。所以单独一个方法添加0
*
* @param buffer
* @param index
* @return
*/
private static StringBuffer appendZero(StringBuffer buffer, int index) {
System.out.println("buffer=" + buffer);
String before = buffer.substring(index, index + 1);
System.out.println("before=" + before);
if (before.equals(ZERO)) {
return buffer;
} else {
buffer.append(ZERO);
}
return buffer;
}
/**
* 判断是否为数字字符串
*
* @param str
* @return
*/
public static boolean isNumber(String str) {
if (str != null && str.length() > 0) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher m = pattern.matcher(str);
if (m.find()) {
return true;
}
return false;
}
return false;
}
public static void main(String[] args) {
System.out.println("转换1580654=" + parseCharsToRMB("1580654"));
}
}
分享到:
相关推荐
这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,...这个函数可以很好地将数字转换为中文大写形式,适用于需要展示人民币金额的场景,确保财务数据的清晰性和准确性。
3. **数字转换**:这是关键步骤,我们需要将输入的数字转换为对应的中文大写形式。可以创建一个二维数组或者哈希表,存储数字与大写字符的对应关系。然后,通过字符串操作,如分割、遍历和替换,将数字字符串转换成...
输入数字转换为人民币大写,Delphi源代码,代码里有个重要的转换单位,此单位共定义两个函数来实现数字金额的中文大写转化,此函数可支持12位整数。程序思路如下: 将小数点前的整数取出,算出整数长度,不足千亿时...
这个程序设计的目的是将阿拉伯数字形式的人民币金额转换成规范的大写汉字形式,以便于财务报表的标准化和防止篡改。在会计和金融业务中,使用大写的汉字可以增加金额的可读性,并且在法律上具有更高的权威性。 ...
- **M_Cmoney**: 结果字符串,存放转换后的人民币大写形式。 ##### 2. 主体逻辑流程 - **金额字符串化**:首先将输入的金额转换为字符串形式。 - **遍历处理**:从最高位开始逐位处理。 - 当位值大于0时: - ...
通过这个`digitToChinese`方法,我们可以方便地将任意人民币数字形式转换为大写形式。例如,调用`MyMoney.digitToChinese(1.56)`会返回"壹元伍角陆分"。 这个程序的核心是数字和大写文字的映射,以及对整数和小数...
通过这样的程序,我们可以快速、准确地将任意数字金额转换为中文大写形式,满足财务报告和相关业务的需求。 四、总结 数字金钱转换成中文大写是金融领域必备的基本技能,它遵循特定的规则,包括数字与中文字符的...
本节将详细讲解如何用VB编写一个程序,将数字转换成中文大写的人民币格式。 首先,我们要明确人民币数字的中文大写规则:零(0)对应“零”,一(1)到九(9)分别对应“壹”到“玖”,小数点后第一位的数字对应分...
本话题主要涉及如何将阿拉伯数字形式的金额转换为对应的人民币大写汉字。 在进行这种转换时,我们需要了解人民币大写金额的基本规则。以下是一些关键知识点: 1. **基本汉字单位**:人民币的大写金额通常包括以下...
在IT领域,编程时常需要处理各种数据格式的转换,其中包括将特定的表示方式转化为其他形式。本主题聚焦于一个特定的转换任务:将罗马数字转换为中文大写人民币数字。这个任务常见于财务软件或者自动化的会计系统中,...
在IT领域,尤其是在财务软件开发或者处理金融数据时,将数字转换为大写形式是常见的需求,这主要是为了确保财务报告的清晰度和准确性。在中国,人民币金额通常使用汉字大写来表示,以防止篡改和减少计算错误。标题...
在IT行业中,尤其是在财务软件开发或者自动化报表系统中,经常需要将数字转换成中文大写的金额形式,以便符合中国的财务规范。"数字转换成金额大写"是一个常见的需求,特别是在Delphi这样的编程环境中。Delphi是一款...
这个"Rmb.rar_人民币 转换 java_人民币大写"的压缩包就是一个典型的例子,它包含了一个Java程序,用于将数字转换成符合中国金融规范的人民币大写形式。这种转换对于财务报表、发票开具等场景至关重要,因为它们要求...
在编程中,将人民币小写转换为大写,一般涉及以下步骤: 1. **整数部分的转换**:将整数部分的每一位数字对应到相应的汉字。例如,0对应零,1对应壹,以此类推至9对应玖。这个过程可以通过创建一个映射表来实现,将...
6. **软件实现**:在实际工作中,人们通常会使用专门的软件或在线工具来进行人民币大写转换,这些工具能够自动完成转换,大大提高工作效率。这些工具通常具有用户友好的界面,只需输入数字即可快速得到大写金额。 7...
要实现数字大写转换,我们需要创建一个函数,该函数接收一个数字作为参数,然后返回对应的中文大写形式。 接下来,我们来看关键的`ChineseNumberLowerToUpper.as`文件。这个文件通常包含一个ActionScript类,该类中...
这个工具的主要功能是将阿拉伯数字形式的人民币金额自动转换成规范的大写汉字形式,确保了填写的准确性,避免了因为书写错误导致的财务纠纷。 首先,我们来了解一下人民币大写的书写规则。在中国,为了防止篡改,...
在金融行业,特别是在财务系统中,处理货币数字时,经常需要将小写的金额转换为大写的汉字形式,以避免因数字混淆而引发的错误。"人民币小写转大写的程序"就是一个这样的解决方案,用于将诸如“123456.78”这样的...
总结来说,这个C++程序实现了将数字转换为中文大写金额的功能,这对于需要处理中文财务数据的系统来说非常有用。通过理解数字到中文金额的转换规则,并运用C++编程技术,我们可以构建出高效、准确的转换工具。
这个DLL库的出现,为开发者提供了一个便捷的工具,能够自动将阿拉伯数字形式的人民币金额转换为汉字大写,同时也支持到"兆"位的转换以及负数的处理。以下是对这个知识点的详细说明: 1. **DLL库(Dynamic Link ...