标题:如何用Integer存一个比Integer.MAX_VALUE还要大的值,并确保他不失真??
只看楼主
认真的求学者
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-1
结帖率:0
已结贴  问题点数:20 回复次数:4 
如何用Integer存一个比Integer.MAX_VALUE还要大的值,并确保他不失真??
我想过把它转换成16进制的数如:
 public class TestInt {
    public static void main(String[] args) {
        System.out.println(TestInt.jieCheng(20));
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Long.MAX_VALUE);
    }
   
    public static String jieCheng(int m){
        int n = 1;
        for(int i=1;i<=m;i++){
            n = n * i;
        }
        return Integer.toHexString(n) ;
    }
}
但是如果再大一点的数还是存不进去!!
求大神指教!!
搜索更多相关主题的帖子: 如何 public void 
2012-11-02 21:33
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:10 
很明显不行啊,都已经是最大了,参考:1、你可以用long来存放。2、BigInteger

My life is brilliant
2012-11-03 12:22
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
得分:10 
java能处理的数已经很大了

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-06 00:30
认真的求学者
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-1
得分:0 
回复 2楼 lz1091914999
我知道了,多谢大神指点,用数组做,在处理数据的时候很少会考虑会不会越界。
package MATH;

public class math {
    public void calculate(int number){

        int i=0;
        int pArray[]=new int[100];
        pArray[0]=1;
        int count=1;
        int flag=0;
        for(int j=2;j<=number;j++){
            for(i=0;i<count;i++){
                pArray[i]*=j;
            }
            if (pArray[count - 1] >= 10 && pArray[count - 1] < 100) {
                count++;
            } else if (pArray[count - 1] >= 100 && pArray[count - 1] < 1000) {
                count += 2;
            }
            for (i = 0; i < count; i++) {
                if (pArray[i] >= 10 && pArray[i] < 100) {
                    flag = pArray[i] / 10;
                    pArray[i + 1] += flag;
                    pArray[i] = pArray[i] % 10;
                } else if (pArray[i] >= 100 && pArray[i] < 1000) {
                    flag = pArray[i] / 100;
                    pArray[i + 2] += flag;
                    flag = (pArray[i] / 10) % 10;
                    pArray[i + 1] += flag;
                    pArray[i] = (pArray[i] % 100) % 10;
                }
            }

        }
        
        //print
        for(i=count-1;i>=0;i--){
            System.out.print(pArray[i]);
        }
    }
}
package MATH;

import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        int number = 0;
        int nFlag=1;
        while(nFlag==1) {
            System.out.print("你想计算几的阶乘:");
            Scanner scanner = new Scanner(System.in);
            number = scanner.nextInt();
            math tst = new math();   
            System.out.print(number + "的阶乘是");
            tst.calculate(number);
            System.out.println();
            System.out.print("是否继续(1:继续, 其他:退出):");
            nFlag=scanner.nextInt();
        }
    }

}

这样就ok了!
2012-11-13 10:15
认真的求学者
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-9-1
得分:0 
回复 2楼 lz1091914999
谢谢,已经知道了,我已开始准备使用int转换成String类型做,试了一下很麻烦,还是数组来得好。
2012-11-13 10:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385717-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052262 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved