社区
Web 开发
帖子详情
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
fuyingch
2003-12-08 01:28:32
高分求助数字金额转化为大写的java源码!如50.20元 自动转化为伍拾点贰圆。急
...全文
107
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)
基于SpringBoot的社区家政管理系统(
源码
+讲解视频+LW)
本课题基于 SpringBoot 开发社区家政管理系统,聚焦社区内家政服务的供需对接与规范化管理,实现服务人员管理、订单调度、服务评价及安全保障的
数字
化服务,适配社区居民家政需求与家政从业者的高效协作需求。 核心功能包括:1. 家政人员管理:录入家政服务人员信息(身份证、健康证、技能证书),按服务类型(保洁、育儿、护老、维修)分类,标注服务年限、客户好评率及擅长领域(如 “擅长婴幼儿辅食制作”),系统定期提醒健康证年检,不合格人员
自动
下架。2. 订单发布与匹配:居民发布家政需求(服务时间、内容、预算),系统
Codex Computer Use插件:让AI真正操作桌面应用的
自动
化核心
AI
自动
化不再止步于文本生成与指令建议,而是深入操作系统底层,实现对GUI应用的真实操控。Computer Use插件通过视觉感知引擎、原生UI
自动
化API(Windows UIA/macOS AX)与上下文记忆桥,赋予AI‘手眼能力’,使其能精准
点
击、拖拽、输入、跨应用协同。这种零代码GUI操作能力,显著降低重复性办公任务(如批量文件处理、跨系统数据搬运、会议纪要转待办)的执行门槛,成为连接AI意图与真实动作的关键枢纽。结合OCR增强、工作流编排、邮件/文档/调试等专业插件,可构建端到端的桌面级智能代理—
【2024年华为OD机试】(B卷,200分)- 跳格子2 (
Java
& JS & Python&C/C++)
小明和朋友玩跳格子游戏,有 n 个连续格子组成的
圆
圈,每个格子有不同的分数,小朋友可以选择以任意格子起跳,但是不能跳连续的格子,不能回头跳,也不能超过一圈;:因为格子是首尾相连的,我们不能同时选择第一个格子和最后一个格子。通过这种方法,我们可以有效地解决环形格子的问题,时间复杂度为 O(n),其中 n 是格子的数量。此题是一个典型的动态规划问题,但因为格子是首尾相连的,增加了问题的复杂性。给定一个代表每个格子得分的非负整数数组,计算能够得到的最
高分
数。只能跳3这个格子,因为第一个格子和第三个格子首尾相连。
Claude Opus 4.7深度解析:知识工作闭环与
数字
员工能力跃迁
大语言模型正从通用问答工具演进为可执行端到端知识任务的‘
数字
员工’,其核心在于构建‘读→思→写→执行→验证’的闭环能力。这一演进依赖多模态理解、长上下文语义建模、工具调用可靠性及跨文档契约推理等关键技术突破。Claude Opus 4.7并非泛化能力堆砌,而是聚焦法律审查、
自动
化编码、终端执行、财报分析等高价值场景,在OfficeQA Pro(80.6%)和SWE-bench Pro(64.3%)等专业基准中实现质变,标志着AI从‘辅助决策’迈向‘协同交付’。对于企业用户,选型关键已从参数规模转向任务适配性
Mythos模型:AI驱动的
自动
化漏洞挖掘与安全范式革命
大语言模型正从代码生成工具演进为具备深度程序分析与 exploit 合成能力的安全推理引擎。其核心原理在于多阶段协同推理(MSC-I)架构,融合静态分析、符号执行与约束求解,实现对内存布局、并发状态机和协议逻辑的跨层建模。这种技术价值不仅提升漏洞发现效率,更推动DevSecOps从‘扫描-修复’转向‘攻击面定义-风险编排-护栏构建’的新工作流。典型应用场景覆盖云原生服务、嵌入式固件、金融支付中间件等高保障系统,尤其擅长识别传统fuzzing遗漏的逻辑漏洞与竞态条件。Mythos作为代表,标志着AI安全已进入
Web 开发
81,111
社区成员
341,723
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章