UDN-企业互联网技术人气社区

板块导航

浏览  : 10435
回复  : 50

汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九,求转换

[复制链接]
发表于 2014-7-25 16:09:31 | 显示全部楼层

                该回复于2014-07-25 16:53:28被版主删除
            
        
使用道具 举报

回复

发表于 2014-7-25 16:33:33 | 显示全部楼层
解析字符串,得到各个位(比如 “个位” 、 “十位” )和位上的系数(有几个 “个” 、 几个 “十” ),然后定义两组规则,比如 “一” 对应 数字 1 , ”万“ 对应 1E4 (科学计数法,一乘以十的四次方),等等,然后二者分别对应相乘,再相加求和,就可以得到数字了
        
使用道具 举报

回复

发表于 2014-7-25 16:56:49 | 显示全部楼层
只想到,万、亿作切分,分三块: a亿b万c;c四位数,b四位数,a四位数。如果更多,那就递归切分。
        
使用道具 举报

回复

发表于 2014-7-25 17:56:12 | 显示全部楼层
首先  我写出来过,--炫耀一下
其次 弄丢了----别骂
问题是,对于某些 零 是可以省略的,有些不可以省略

最后,你们首先要询问的是会计人员,请教一下人家是怎么 读一个数字的,那也是有规则的,然后再思考怎么写
这里一群 程序员,怎么可能思考正确规则


之前我就是这么做的
        
使用道具 举报

回复

发表于 2014-7-25 19:20:44 | 显示全部楼层
三楼的思路已经是对的了,
设计时多加一些防错的即可。
至于十八楼举的例子不用管它,
现在已经不允许用四万万这样的数字了,
不合理的直接报错即可。
        
使用道具 举报

回复

发表于 2014-7-25 19:39:31 | 显示全部楼层
一百三十四亿一千零二十三万六千六百零九
1百3十4亿1千02十3万6千6百09

亿万千百十
正序时加,逆序时乘
从头开始
1百3十4亿1千02十3万6千6百09
(1*100 + 3*10 + 4)* 100000000  + (1*1000 + 02 * 10) * 10000 + 6*1000 +6*100 +09
        
使用道具 举报

回复

发表于 2014-7-25 20:09:49 | 显示全部楼层

                该回复于2014-07-29 16:01:39被版主删除
            
        
使用道具 举报

回复

发表于 2014-7-25 20:14:31 | 显示全部楼层
大家何必想的那么复杂呢,看到这么多凌乱的整齐的解答我也感觉应该很难。
然后拿笔在纸上画了



我的思路是,零和十都可以不要,第一步,先去掉他们就好。
然后第二步,去掉百,不过遇到B之后,在字母之前不够俩数字,就得中间补0,
然后去掉千、万、亿……
恩,别急,不知各位发现了没。中华文化博大精深阿。

这 十百千万亿就是让我们来识别的,其实根本不需要。
比如  “一百三十四亿一千零二十三万六千六百零九”
别管“十百千万亿”,见到“零~九”输出对应数字字符就好。我们来输出:
13410236609 哈哈,完全正确。
然后把这个字符串转为整型,这对大家来说不难吧。


        
使用道具 举报

回复

发表于 2014-7-25 20:16:13 | 显示全部楼层
不知为啥,删不了26L那条,那个有个字打错,然后没有权限编辑、删除。。。。
        
使用道具 举报

回复

发表于 2014-7-25 20:53:14 | 显示全部楼层
25楼表达得真清楚,就是这样。
运用状态机实现即可。
        
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部