将数字字符串人民币转化成大写字符串人民币
2005-03-08 12:52
253 查看
/*
* 创建日期 2005-3-8
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.test;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class TestRMB {
/**
* 测试numberConvert方法
* @param args String[]
*/
public static void main(String[] args) {
//这是能转换的最大的数字
String rmb = "90909.99";
System.out.println(numberConvert(rmb));
}
/**
* 将字符串数字转化为中文。
* @param in 数字
* @return 中文大写
*/
public static String numberConvert(String in) {
StringBuffer out = new StringBuffer();
String chn[] = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String end[] = {
"", "拾", "佰", "仟", };
String mid[] = {
"", "万", "亿", "兆", };
double ind = Double.parseDouble(in);
long ind_left = (long) ind;
long[] inte = new long[13]; //存放整数位
int[] floa = new int[4]; //存放小数位
/*将整数部分放入inte[]*/
for (int i = 12; i >= 0; i--) {
inte[i] = (long) (ind_left / (long) (Math.pow(10, i)));
ind_left %= (long) (Math.pow(10, i));
}
/*象小数部分放入floa[]*/
int index = in.indexOf('.');
if (index != -1) {
String str = in.substring(index + 1);
for (int i = 0; i < str.length(); i++) {
floa[i] = Integer.parseInt(str.substring(i, i + 1));
}
}
/**如果整数位不是0,处理整数位 例子:111.1234**/
if ( (int) ind != 0) {
int i = 12;
while (inte[i] == 0) { file://查找首位
i--;
}
/*输出到 out */
for (int j = i / 4; j >= 0; j--) {
if (j == 3) { //如果 数字13位,单独处理 1兆
out.append(chn[ (int) (inte[12])]).append(mid[3]);
j--;
}
for (int k = 3; k >= 0; k--) {
int num = 4 * j + k;
if (inte[num] != 0) { //再不是0的位上一次添加 十百千
out.append(chn[ (int) (inte[num])]).append(end[k]);
}
else {
if (k == 0 || k == 0 && k == 1 || k == 0 && k == 1 && k == 2 ||
k == 0 && k == 1 && k == 2 && k == 3) {} //如果是 万亿位 的最后几位全是0 则也不输出
else {
if (inte[num - 1] == 0) {} //根据后面以为是不是0判断加不加0 例子: 1003
else {
out.append(chn[0]);
}
}
}
}
if (! (inte[j * 4 + 0] == 0 && inte[j * 4 + 1] == 0 &&
inte[j * 4 + 2] == 0 && inte[j * 4 + 3] == 0)) { //如果有一段全是0 则也不输出位 例子:1000 0000 0003 不会出现 一千亿 万 零三
out.append(mid[j]);
}
}
if (out.charAt(0) == '零') { //因为最后一位没有下一位,所以是0则删去
out.deleteCharAt(0);
} //例子 30
}
/**如果整数位是0,处理整数位 ,直接加0 例子:0.1234**/
else {
out.append('零');
}
/*处理小数部分*/
/*如果存在小数位*/
if (index != -1) {
out.append('点'); //处理小数位
for (int m = 0; m <= 3; m++) {
out.append(chn[floa[m]]);
}
int zero = out.length() - 1;
while (out.charAt(zero) == '零') { //最后几位如果是0,则删除
out.deleteCharAt(zero);
zero--;
}
}
return out.toString();
}
}
* 创建日期 2005-3-8
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.test;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class TestRMB {
/**
* 测试numberConvert方法
* @param args String[]
*/
public static void main(String[] args) {
//这是能转换的最大的数字
String rmb = "90909.99";
System.out.println(numberConvert(rmb));
}
/**
* 将字符串数字转化为中文。
* @param in 数字
* @return 中文大写
*/
public static String numberConvert(String in) {
StringBuffer out = new StringBuffer();
String chn[] = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String end[] = {
"", "拾", "佰", "仟", };
String mid[] = {
"", "万", "亿", "兆", };
double ind = Double.parseDouble(in);
long ind_left = (long) ind;
long[] inte = new long[13]; //存放整数位
int[] floa = new int[4]; //存放小数位
/*将整数部分放入inte[]*/
for (int i = 12; i >= 0; i--) {
inte[i] = (long) (ind_left / (long) (Math.pow(10, i)));
ind_left %= (long) (Math.pow(10, i));
}
/*象小数部分放入floa[]*/
int index = in.indexOf('.');
if (index != -1) {
String str = in.substring(index + 1);
for (int i = 0; i < str.length(); i++) {
floa[i] = Integer.parseInt(str.substring(i, i + 1));
}
}
/**如果整数位不是0,处理整数位 例子:111.1234**/
if ( (int) ind != 0) {
int i = 12;
while (inte[i] == 0) { file://查找首位
i--;
}
/*输出到 out */
for (int j = i / 4; j >= 0; j--) {
if (j == 3) { //如果 数字13位,单独处理 1兆
out.append(chn[ (int) (inte[12])]).append(mid[3]);
j--;
}
for (int k = 3; k >= 0; k--) {
int num = 4 * j + k;
if (inte[num] != 0) { //再不是0的位上一次添加 十百千
out.append(chn[ (int) (inte[num])]).append(end[k]);
}
else {
if (k == 0 || k == 0 && k == 1 || k == 0 && k == 1 && k == 2 ||
k == 0 && k == 1 && k == 2 && k == 3) {} //如果是 万亿位 的最后几位全是0 则也不输出
else {
if (inte[num - 1] == 0) {} //根据后面以为是不是0判断加不加0 例子: 1003
else {
out.append(chn[0]);
}
}
}
}
if (! (inte[j * 4 + 0] == 0 && inte[j * 4 + 1] == 0 &&
inte[j * 4 + 2] == 0 && inte[j * 4 + 3] == 0)) { //如果有一段全是0 则也不输出位 例子:1000 0000 0003 不会出现 一千亿 万 零三
out.append(mid[j]);
}
}
if (out.charAt(0) == '零') { //因为最后一位没有下一位,所以是0则删去
out.deleteCharAt(0);
} //例子 30
}
/**如果整数位是0,处理整数位 ,直接加0 例子:0.1234**/
else {
out.append('零');
}
/*处理小数部分*/
/*如果存在小数位*/
if (index != -1) {
out.append('点'); //处理小数位
for (int m = 0; m <= 3; m++) {
out.append(chn[floa[m]]);
}
int zero = out.length() - 1;
while (out.charAt(zero) == '零') { //最后几位如果是0,则删除
out.deleteCharAt(zero);
zero--;
}
}
return out.toString();
}
}
相关文章推荐
- 将一串数字转化为中文字符串,使用 C# 将数字转换成大写人民币 (例如:用户输入2300,系统就会显示两千三百元 )
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- 将人民币的数字转化成大写表示 [asp]
- 将人民币的数字表示转化成大写表示(C#版)
- 将人民币的数字表示转化成大写表示(C#版)
- 将人民币的数字表示转化成大写表示(C#版)
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- 数字转化为人民币大写(PHP)
- 在word中如何把数字转化成人民币大写?
- PHP将数字金额转化为中文人民币大写
- 将人民币的数字表示转化成大写表示
- 将阿拉伯数字转化成大写的人民币数字
- 将数字转化为大写汉字的字符串
- 将人民币的数字转化成大写表示
- 转化十亿以内的人民币数字为大写格式
- 将小写数字转化为大写人民币
- 数字变成大写的类,把人民币转化为大写汉字
- 将数字金额转换为人民币大写字符串
- php将数字转化为中文大写人民币格式