- 浏览: 370453 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
xujishen:
新入职 写道还是没很明白~~这个BigDecimal.ROUN ...
BigDecimal带精度的运算 -
542348257:
数字为long型的时候 好像处理有点问题
【无聊的笔记】将数字转换为中文读法 -
陈小妞:
当你输入100003980的时候在万位会多一个万字
【无聊的笔记】将数字转换为中文读法 -
stranger520:
可能有问题吧,举个例子: pacage1/User.class ...
java读取指定package下的所有class -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java学习——mina篇
将阿拉伯数字的数变成我们常用的中文读法,
比如说: 1234,读作1千2百3十4,反正就跟中文读的一样就对了。
分析过程其实是这个题目最重要的,但是我实在不想写那么多文字了。
这里纯粹为了记录代码,以后再补上分析过程和思路。
代码记录:
import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * @author goliang * @version 创建时间:2011-6-5 下午01:29:32 类说明 */ public class Num2String { /** * 处理0,1,2.。9的中文读法的 */ private static Map<Integer, String> numberStringMap = new HashMap<Integer, String>(); /** * 10进制的读法 */ private static Map<Integer, String> base10StringMap = new HashMap<Integer, String>(); static { numberStringMap.put(0, "零"); numberStringMap.put(1, "壹"); numberStringMap.put(2, "贰"); numberStringMap.put(3, "叁"); numberStringMap.put(4, "肆"); numberStringMap.put(5, "伍"); numberStringMap.put(6, "陆"); numberStringMap.put(7, "柒"); numberStringMap.put(8, "捌"); numberStringMap.put(9, "玖"); base10StringMap.put(1, ""); base10StringMap.put(2, "十"); base10StringMap.put(3, "百"); base10StringMap.put(4, "千"); base10StringMap.put(5, "万"); } /** * @param args */ public static void main(String[] args) { int a[] = { 2000042, 1298302000, 1003, 1030, 1000, 20000000 }; for (int i = 0; i < a.length; i++) { readChinese(a[i]); } } private static void readChinese(int a) { String intString = a + ""; char ichar[] = intString.toCharArray(); char icharrevert[] = revertCharArray(ichar); int i = 0; String result = ""; while (i < icharrevert.length) { char[] icharsplit = Arrays.copyOfRange(icharrevert, i, i + 4 < icharrevert.length ? i + 4 : icharrevert.length); result = processSplitedNumber(icharsplit, (i + 1) / 4) + result; i = i + 4; } System.out.println("原数字为:"+a+"切换后的读法为:"+result); } private static char[] revertCharArray(char[] ichar) { char icharNew[] = new char[ichar.length]; /** * 将得到的数组倒排,这样做原因是因为读的时候从前往后读, 位数前面的高 */ for (int i = ichar.length - 1, j = 0; i >= 0 && j < ichar.length; i--, j++) { icharNew[j] = ichar[i]; } return icharNew; } private static String processSplitedNumber(char[] num, int time) { StringBuffer sb = new StringBuffer(); for (int i = num.length - 1; i >= 0; i--) { // sb.append(num[i]); if (num[i] == '0') { /** * 当前数字是0.并且是最后一位,直接不读 */ if (i == 0) { continue; } /** * 当前数字是0,下一个数字不是0,补一个0上去读 */ if (num[i - 1] != '0') { sb.append(numberStringMap.get(Integer.valueOf(num[i] + ""))); } else { continue; } } else { /** * 如果当前位数不是0,那就正常的读出数字和位 */ sb.append(numberStringMap.get(Integer.valueOf(num[i] + ""))); sb.append(base10StringMap.get(i + 1)); } } if (time == 0) { } else if (time == 1) { sb.append("万"); } else if (time == 2) { sb.append("亿"); } return sb.toString(); } }
最后的输出结果:
原数字为:2000042切换后的读法为:贰百万零肆十贰 原数字为:1298302000切换后的读法为:壹十贰亿玖千捌百叁十万贰千 原数字为:1003切换后的读法为:壹千零叁 原数字为:1030切换后的读法为:壹千零叁十 原数字为:1000切换后的读法为:壹千 原数字为:20000000切换后的读法为:贰千万
发表评论
-
2013年技术愿望目标
2013-01-07 23:25 0一: 读源码 1:jetty 2:webx,spr ... -
jetty的http协议解析
2012-07-31 23:59 0上篇文章讲到:jetty的connection解析到hand ... -
jetty源码阅读之connection解析到handler调用
2012-07-29 21:58 0前言: 想要处理用户发出的http请求,首先得获得连接 ... -
jetty源码阅读之connector
2012-07-29 14:56 0AbstractConnector @Overr ... -
定时执行Timer的源码阅读
2012-02-22 18:51 1725Timer的实现原理: 1:timer简介; ... -
jetty翻译
2011-09-06 23:50 0异步等待 异 ... -
【转】mysql Host is blocked error错误解决方案
2011-08-01 14:40 2961Host is blocked because of ma ... -
java按值传递
2011-06-28 23:13 0来看看代码 packag ... -
用mina网络传输使用ObjectSerializationCodecFactory一个小注意点
2011-04-05 18:18 8728背景: 之前的 一篇介绍mina的博客中,提到通过mi ... -
jboss下的war包的context映射配置
2011-02-10 17:19 0一般web容器都可以在 deploy 目录下放多个war包, ... -
maven war plugin 的filter 配置。
2011-02-10 17:14 0具体可以参考,maven的官方配置。 http://m ... -
【why系列】内部类为什么访问外围内需要用final
2011-01-10 13:16 011111111111111 -
java命令行知多少(反正我知道的比较少)
2010-12-29 17:11 3880打开 %java_home%\bin 下面,看一堆的命令 ... -
【why系列】为什么序列化要实现一个空接口Serializable
2010-12-25 22:16 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 -
【why系列】为什么说java是不可变的对象
2010-12-25 22:15 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 package ... -
java线程总结
2010-12-23 15:25 01:java启动一个线程,会为每一个线程,分配一个 ... -
【监控】通过jmx获得系统的gc,内存情况
2010-11-27 21:52 6259通过jmx访问jvm知道的Mbean的一些信息,可以取得系统运 ... -
自动动手写原生态jmx,MbeanInfo,invoke
2010-11-16 22:07 2057使用jmx的东东主要包括下面几个步骤了: 发布j ... -
用spring连接jmx
2010-11-14 18:20 1822接着上一篇 “原生态连接jmx”的例子。 上一篇中,发 ... -
采用hudson跟踪代码质量:单元测试和findbug报表
2010-10-31 22:17 0hu
相关推荐
3. **翻译方法**:将英文的逗号转换为中文的竖线,然后按照中文的四位一组规则进行翻译。对于复杂数字,如549,946,768,可以先用竖线划分,再按照中文的习惯读法进行翻译。 二、中译英 1. **中文数字的结构与记录*...
例如,将2222元2角2分转换为2.22元,或把810元8角1分转换为0.81元,学生在转换的过程中加深对小数点位置及数位概念的理解。 在教学中,教师还应举例说明小数表示货币时的具体含义。通过具体的数字例子,如3.2120....
1. 大数的换算和估算:将数字转换为以万或亿为单位,并进行四舍五入,如118000万和11.8亿。 2. 代数初步:涉及简单的代数表达式,如a枝铅笔0.5元,b本笔记本1.2元,总花费是0.5a+1.2b元。 3. 正负数的认识:收入和...
通过将分数转化为小数,如1分米等于0.1米,3分米等于0.3米,以此类推,帮助学生建立分数和小数之间的联系,理解分数的十分之几可以写成小数的零点几。 5. **小数的写法**: 学习如何正确书写小数,例如,0.38表示...
小数部分的读法遵循从左到右依次读出每个数字的原则,小数点读作“点”。例如,0.50读作“零点五零”,1.06读作“一点零六”。 写小数时,要先写整数部分,与写整数的方法相同,然后在个位的右下角点上小数点,最后...
写法上,学生要练习将货币单位(元、角、分)转换成小数形式,例如将3元5角写为3.50元,或者将2元5角5分写为2.55元。 三、小数点的重要性 通过小明误写笔记本价格的实例,教案强调了小数点位置正确性的重要性。...
9. 选择题:涉及长度单位、数字读法、三角形内角性质和日期计算,检验学生的综合应用能力。 10. 计算题:包括简单的加减法和乘除法,以及竖式计算和验算,这些都是基础数学运算的练习。 11. 图形问题:通过图形...
1. **大数的读法与单位转换**:958000000读作九亿五千八百万,将其改写成以“万”为单位的数是95800万,省略亿位后面的尾数约是10亿。这里涉及到大数的读法、整数的单位换算以及近似数的取法。 2. **正负数的意义**...
7. **比例和比值**:将比化简为最简整数比并求出比值,体现了比例的理解和简化比例的能力。 8. **等腰三角形的顶角计算**:根据底角和顶角的关系求解,运用了三角形内角和的性质。 9. **数列规律**:2, 3, 4, 7, 8...
3. 比较大小时,首先要将百分数转换为小数进行比较。0.834,83.3%(等于0.833),0.83…,这四个数中,最小的是0.833,最大的是0.83…,因为0.833和0.834相等。 4. 数的等价形式,0.45可以表示为45÷100,45/100,...
15. **数字组合与乘法的最大值**:要使乘积最大,应将大数字放在高位,所以最大组合是86510×8651,或者8651×8650。 二、**选择题详解** 1. **竖式乘法的理解**:6与5相乘实际是600×50,因为6代表的是600,5代表...
3. 复合运算的理解与转换:第3题要求将两道算式合并成一道,这是对复合运算和等价关系的理解。 4. 除法的实际应用:第4题通过具体情境解释除法的意义,包括平均分配和按固定数量分组。 5. 连续减法:第5题“从32里...