社区
Web 开发
帖子详情
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
fuyingch
2003-12-08 01:28:32
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
...全文
63
25
打赏
收藏
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eureka0891
2003-12-09
打赏
举报
回复
sbResult.append(a_strNumber[strInteger.charAt(i) - 48]);//这里为什么要减48
strInteger.charAt(i)取出的是Asc码,所以要-48
48是Asc 码的0
Rangiggs
2003-12-08
打赏
举报
回复
up
lu8088
2003-12-08
打赏
举报
回复
up
springouting
2003-12-08
打赏
举报
回复
good
kjah
2003-12-08
打赏
举报
回复
能用!不错!
就一个字:
顶!!!!!!!!!!!
fliedfish
2003-12-08
打赏
举报
回复
levitt.liu@je01.com
色老虫
2003-12-08
打赏
举报
回复
我是害虫
yupingping
2003-12-08
打赏
举报
回复
yujiaping@0451.com
也请给我一份呀
f286
2003-12-08
打赏
举报
回复
大侠,程序有一部分没看明白请解释一下
//开始翻译:
StringBuffer sbResult = new StringBuffer();
for(int i=0; i<strInteger.length(); i++) {
sbResult.append(a_strModify[i]);
sbResult.append(a_strNumber[strInteger.charAt(i) - 48]);//这里为什么要减48呢
}
sbResult = sbResult.reverse();
色老虫
2003-12-08
打赏
举报
回复
哦,没看下边的,不好意思 ,打搅
junyi2003
2003-12-08
打赏
举报
回复
晕,好老的问题,结合位数和数组的问题,简单
呵呵
to killerdanny(月影-月下轻舞剑 酒里怀过往):以后不要轻易贴源码,这样对你我他都不利。能给个思路其实已经很好了,你这样会助长懒虫的诞生
色老虫
2003-12-08
打赏
举报
回复
killerdanny(月影-月下轻舞剑 酒里怀过往) 老大,编译说repalce符号不认识啊,我看不出来怎么回事,解说一下吧
色老虫
2003-12-08
打赏
举报
回复
我顶~~~~~~~~
killerdanny
2003-12-08
打赏
举报
回复
/**
* 功能:用给定字符串pDest替换字符串pValue中的pSource
* @param pValue
* @param pSource
* @param pDest
* @return 经过替换处理的字符串
* 例:pValue= xy ,pSource =x ,pDest = 测试
* 调用改函数后pValue =测试y
*
* 说明一下: 如果 pvalue= xxx pSource = xx 处理结果是 x
* ,这个结果可能与您平时看到的替换函数有点不一样,通常应该是
* pSource =xx.
*
*/
static private void replace(StringBuffer pValue, String pSource, String pDest){
if (pValue == null ||
pSource == null ||
pDest == null)
return ;
int intPos = 0;//记录pSource在pValue中的位置
do{
//---------------------------------------------------
//intPos = pValue.toString().indexOf(pSource,intPos);
//---------------------------------------------------
//============================================
intPos = pValue.toString().indexOf(pSource);
//============================================
if (intPos == -1)//没有找到pSource.
break;
pValue.delete(intPos,intPos + pSource.length());
pValue.insert(intPos,pDest);
//---------------------------------
//intPos += pSource.length();
//---------------------------------
}while(true);
}
//现在发现这样的处理没有什么实际意义。所以我就不写了.
public String ChineseToNumber(String pValue){
return null;
}
public static void main(String[] args) {
//为了方便您看程序运行结果,我将所有方法都设置成静态的
//测试:
System.err.println(10);
System.err.println(NumberToChinese(10));
System.err.println(12);
System.err.println(NumberToChinese(12));
System.err.println(102);
System.err.println(NumberToChinese(102));
System.err.println(1022);
System.err.println(NumberToChinese(1022));
System.err.println(10009);
System.err.println(NumberToChinese(10009));
System.err.println(100000);
System.err.println(NumberToChinese(100000));
System.err.println(1000008);
System.err.println(NumberToChinese(1000008));
System.err.println(10000080);
System.err.println(NumberToChinese(10000080));
System.err.println(1000020300);
System.err.println(NumberToChinese(1000020300));
System.err.println(0.34);
System.err.println(NumberToChinese(0.34));
System.err.println(10.34);
System.err.println(NumberToChinese(10.34));
System.err.println(101.34);
System.err.println(NumberToChinese(101.34));
System.err.println(-101.34);
System.err.println(NumberToChinese(-101.34));
System.err.println(-100100010.33);
System.err.println(NumberToChinese(-100100010.33));
}
}
killerdanny
2003-12-08
打赏
举报
回复
//--------------------------------------------------------
我已经测试过很多便了,没问题了!
//--------------------------------------------------------
/**
* 功能:数字 变成 汉字
* 汉字 变成 数字
* -----------------------------------
* 说明: 只能处理1000亿范围内的数据.
* 小数点后面最多保留9位
* -----------------------------------
* 如:
* 123 变成 零佰贰拾叁
* 零佰贰拾叁 变成 123
*
* 需求分析:
* ====================
* 数字到汉字
* ====================
* 数字的组成部分: 1: 符号位: 取值范围 {"正","负"}
* 2: 整数部分
* 3: 小数部分
* 4: 整数部分和小数部分之间的分割符号"."
* A:符号位影射到汉字比较简单 “+”----"正"
* "-" ----"负"
* B:分割符号"."的影射是最简单的了 "." ---"点"
* C:小数部分的影射也很简单,直接"翻译"
* .234 ---点贰叁肆.
* D:整数部分的影射复杂点.
* 整数部分的”翻译“之所以复杂是因为除了要将数字影射到对应的汉字,还
* 要添加一些"修饰词"(我把拾,佰,仟,万,亿称做修饰词).
* 如: 1234123421
* 对应汉字: 1拾2亿3仟4佰1拾2万3仟4佰2拾1.(输汉字好麻烦,所以我没有将
* 数字”翻译“过来.
* 如果你仔细分析一下,你会发现,这样的翻译工作很简单.
* 请从 ”1拾2亿3仟4佰1拾2万3仟4佰2拾1“取出全部修饰符(依次从左往右取)
* 你会发现取出来的修饰符号,会很有规律,看上去一定是这个样子:
* 拾,佰,仟,万,拾,佰,仟,亿,拾,佰,仟
* 实现很简单,请看源代码.
* ---------------------------------------------------------------------------
* ====================
* 汉字到数字
* ====================
* 现在发现这样的处理没有什么实际意义。所以我就不写了.
* ---------------------------------------------------------------------
* @version 1.00
* @author huangyh
* @email huangbin0791@163.com
* @date 2002.10.11
*/
package com.cxlife.convert;
public class Convert {
private final static String[] a_strNumber = {"零","壹","贰","叁","肆",
"伍","陆","柒","捌","玖"};
private final static String[] a_strModify = {"","拾","佰","仟",
"万","拾","佰","仟",
"亿","拾","佰","仟"};
private final static String strSign = "负";//实际上”+“号永远都不可能出现.
private final static String strDot = "点";
/**
* 功能: 提取符号位.
* 说明: 如果输入参数是 "-13.3",调用该函数的返回值是 "负";
* 如果输入参数是 "13.3", 调用该函数的返回值是 ""(空值).
* @param pValue
*
*/
static private String getSign(String pValue){
return pValue.indexOf("-") == 0 ? "负" : "";
}
/**
* 功能:返回小数部分的汉字
* 说明:如果输入数据是 12.35,调用该函数返回值是 叁伍
*
* @param pValue
* @return
*/
static private String getFraction(String pValue){
String strFraction = null;//用来保存小数部分的数字串
int intDotPos = pValue.indexOf(".");
if (intDotPos == -1)//没有小数部分.
return "";
strFraction = pValue.substring(intDotPos +1);
StringBuffer sbResult = new StringBuffer(strFraction.length());
//开始翻译.
for(int i=0; i<strFraction.length(); i++)
sbResult.append(a_strNumber[strFraction.charAt(i) - 48]);
return sbResult.toString();
}
/*
* 功能: 返回整数部分的汉字.
* 如果输入参数是: 234.3,调用该函数的返回值是 贰佰叁拾肆.
* @param pValue
* @return
*/
static private String getInteger(String pValue){
String strInteger = null;//用来保存整数部分数字串
int intDotPos = pValue.indexOf(".");//记录"."所在位置
int intSignPos = pValue.indexOf("-");
if (intDotPos == -1 )
intDotPos = pValue.length();
strInteger = pValue.substring(intSignPos+1, intDotPos);//取出整数部分
//反转整数部分数据
strInteger = new StringBuffer(strInteger).reverse().toString();
//-----------------------------------------------------------
//开始翻译:
StringBuffer sbResult = new StringBuffer();
for(int i=0; i<strInteger.length(); i++) {
sbResult.append(a_strModify[i]);
sbResult.append(a_strNumber[strInteger.charAt(i) - 48]);
}
sbResult = sbResult.reverse();
//这个时候得到的结果不标准,需要调整.
//203返回值是 贰佰零拾三个 正确答案是 贰佰零三
//--------------------------------------------------------------------------
//串调整.
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();//将结果反转回来.
}
/**
* 功能: 返回分割符号
* 如果参数是"12.3" 调用该函数的返回值是"点"
* 如果参数是"12" 调用该函数的返回值是""(空值)
* @param pValue
* @return
*/
static private String getDot(String pValue){
return pValue.indexOf(".") != -1 ? "点" : "";
}
//数字到汉字
static public String NumberToChinese(double pValue){
//注意:不能用string.valueOf(pValue)处理,你自己试试就知道了.
java.text.DecimalFormat df = new java.text.DecimalFormat("#.#########");
String pTemp = String.valueOf( df.format(pValue));
StringBuffer sbResult = new StringBuffer(getSign(pTemp) + getInteger(pTemp) +
getDot(pTemp) + getFraction(pTemp));
return sbResult.toString();
}
hxy51899
2003-12-08
打赏
举报
回复
我这里有一下不是java 的程序。不过拿去改成java的就行了。如果你要我就贴上来,要不得等我有时间改成java的。我现在没时间改。
heshi82215
2003-12-08
打赏
举报
回复
我也来凑凑热闹,
heshi_wen@mail.china.com
jscsqb
2003-12-08
打赏
举报
回复
用正则表达式吧
haimingway
2003-12-08
打赏
举报
回复
如若慷慨,赠我一份
allanpoecn@sina.com
abbelaries
2003-12-08
打赏
举报
回复
也给我发一份吧
abbel.dai@scholarbook.com
加载更多回复(5)
java
实现输入
数字
输出
金额
_
JAVA
实现
数字
大写
金额
转换的方法
本文实例讲述了
JAVA
实现
数字
大写
金额
转换的方法。分享给大家供大家参考。具体如下:例子:实现将阿拉伯
数字
的
金额
转换成中文
大写
金额
的形式,例如:¥1011 → 壹仟零壹拾壹
元
整。
大写
数字
为:零、壹、
贰
、叁、肆、伍...
python
数字
金额
转换为中文
大写
金额
(角、分)
编写程序,根据用户输入的
金额
数字
转换成相应的中文
大写
数字
。例如,1002.34转换为“壹仟零
贰
圆
叁角肆分”,100转换为“壹佰
圆
整”。
python 人民币
数字
转汉字
大写
金额
银行在打印票据的时候,常常需要将阿拉伯
数字
表示的人民币
金额
转换为
大写
表示,现在请你来完成这样一个程序。 在中文
大写
方式中,0到10以及100、1000、10000被依次表示为: 零 壹
贰
叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 ...
java
实现阿拉伯
数字
转人民币
大写
(精确到分)
这是一个将阿拉伯
数字
转人民币
大写
的工具类, 精确到人民币
大写
分package com.client;... * 汉字
大写
金额
数字
,一律用正楷字或行书字书写,如壹、
贰
、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、
圆
(
元
)、 *
将
数字
金额
转换为对应的中文
大写
金额
一个小问题,将指定的
数字
金额
转换输出为对应的中文
大写
金额
,比如:对于
数字
金额
123,输出:壹佰
贰
拾叁
圆
讨论之前,我们约定,
数字
最大不超过9999999999999.99,且最多只有两位小数。 问题不难,主要需考虑...
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章