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

板块导航

浏览  : 10629
回复  : 50

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

[复制链接]
发表于 2013-2-19 13:47:28 | 显示全部楼层
引用 8 楼 bluemoby 的回复:Java code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980import java.util.regex.Pat……
这个还比较好点,但不知道万亿是该第一个写法还是第二个写法呢?我现在搞晕了,看看跑的结果:

System.out.println(MoneyTest.parse("一十七万亿一百三十四亿一千零二十三万六千六百零九"));
System.out.println(MoneyTest.parse("一十七万一百三十四亿一千零二十三万六千六百零九"));


170000013410236609
17013410236609

第二条语句写法能出正确的结果。
        
使用道具 举报

回复

发表于 2013-2-19 13:49:38 | 显示全部楼层
引用 9 楼 liujinliang2008 的回复:引用 6 楼 dajbd 的回复:引用 5 楼 MsSnow 的回复:public class Test {

/**
* @param args
*/
public static void main(String[] args) {
String number = "一百三十四亿一千零二十三万六千六百零九";


char[] num = new ……

引用错了,该引用的是7楼的lz代码......
        
使用道具 举报

回复

发表于 2013-2-19 13:58:26 | 显示全部楼层
大神能不能总结一下啊
有没有别的方法?
        
使用道具 举报

回复

发表于 2013-2-19 15:07:14 | 显示全部楼层
引用 7 楼 dajbd 的回复:Java code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package number_converter; //汉字转换为阿拉伯数字//一百三十四亿一千零二十三万六千六……



    public static void main(String[] args) {
            BigInteger d=convert("一千二百五十一万零一亿一千二百五十八万零一百三十四亿八千零三万零一");
        System.out.println(d);
    }

    public static BigInteger convert(String s){
        String [] s1=s.split("亿");
        BigInteger num=new BigInteger("0");
        BigInteger n3 = new BigInteger("0");
        
        for(int i =0;i
        
使用道具 举报

回复

发表于 2013-2-21 20:22:33 | 显示全部楼层
很简单呀,先从右到左把个,十,百,千,万这样写上去,再在相对应的位置填上阿拉伯数字就行了。

        
使用道具 举报

回复

发表于 2014-7-23 18:12:31 | 显示全部楼层
package com.test.andre.tool;

import java.util.HashMap;

/**
* 用作汉字转换成数字的类
*
* @author andre1989@sina.com
* @version 1.0
*/
public class NumTranslate {
        private static HashMap theMap = new HashMap() {
               
                private static final long serialVersionUID = 1L;

                {
                        put("零", (long) 0);
                        put("一", (long) 1);
                        put("壹", (long) 1);
                        put("二", (long) 2);
                        put("贰", (long) 2);
                        put("三", (long) 3);
                        put("叁", (long) 3);
                        put("四", (long) 4);
                        put("肆", (long) 4);
                        put("五", (long) 5);
                        put("伍", (long) 5);
                        put("六", (long) 6);
                        put("陆", (long) 6);
                        put("七", (long) 7);
                        put("柒", (long) 7);
                        put("八", (long) 8);
                        put("捌", (long) 8);
                        put("九", (long) 9);
                        put("玖", (long) 9);
                        put("十", (long) 10);
                        put("拾", (long) 10);
                        put("百", (long) 100);
                        put("佰", (long) 100);
                        put("千", (long) 1000);
                        put("仟", (long) 1000);
                        put("万", (long) 10000);
                        put("亿", (long) 10000);
                }
        };

        public static long translateToNum(String s) {
                // 中间及最终结果
                long result = 0;

                // 当前汉字代表的数值
                long num = 1;

                // 前一汉字的数值
                long flag = 1;

                for (int i = 0; i
        
使用道具 举报

回复

发表于 2014-7-23 20:12:47 | 显示全部楼层
这个问题好像并没有那么简单.

首先 你怎么知道那个数是有效的呢? 比如 .五千零陆千。

其次 如果单位重叠怎么办 比如 五百万零五十万。
        
使用道具 举报

回复

发表于 2014-7-24 08:30:05 | 显示全部楼层
引用 16 楼 zhouchongzxc 的回复:这个问题好像并没有那么简单.

首先 你怎么知道那个数是有效的呢? 比如 .五千零陆千。

其次 如果单位重叠怎么办 比如 五百万零五十万。

五千零陆千不就是1万1吗?五百万零五十万不就是五百五十万吗?
        
使用道具 举报

回复

发表于 2014-7-24 15:12:57 | 显示全部楼层



感觉好复杂的说!
这是一个数字:
一千二百五十一万零一亿一千二百五十八万零一百三十四亿八千零三万零一
这又是一个数字:
一千二百五十一万亿一千二百五十八万零一百三十四亿八千零三万零一
这又是一个数字:
一千二百五十一万零一亿亿八千零三万零一
这又是一个数字:
一千二百五十一万亿亿八千零三万零一

感觉先用亿来拆分成若干个字符串,然后每个字符串的的值再乘以相应的系数(1E的N次方),最后求和。。。是这样搞吗?
        
使用道具 举报

回复

发表于 2014-7-24 15:19:07 | 显示全部楼层
先截取然后替换补充/
        
使用道具 举报

回复

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

本版积分规则

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