站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题java 中如何存取和操作10亿这么大的数? 老鸟进。

java 中如何存取和操作10亿这么大的数? 老鸟进。

摘要: java 中如何存取和操作10亿这么大的数? 老鸟进。


比如 写个方法 计算 1+2+3+4。。。。。10亿

并返回结果。

怎么个做法呀。


mark


估计使用long就可以,要么你就换成double.


同意楼上 & 接分


BigInteger类


使用BigDecimal decimal = new BigDecimal()可以


10亿又不是很大!


java的int型是-21亿到+21亿之间。long型是这个数的平方。用long型足以描述这世界上当今技术需要描述数量所能达到极限。


所以你的用int就可以。


int 用4字节存储 ,应该够了,不够用long


int肯定是不够用,但是在这里long就已经够用了,但是如果再往上就可以用BigInteger

long型远远未能满足一些复杂计算上的极限!


要是 还要大呢? 1000亿呢?


更大的话就用BigInteger。自己去查一下文档。


我做RSA时用BigInteger,可以处理200位的整数,够用了吧


BigInteger绝对够,1000亿也可以


BigInteger/BigDecimal


int可以描述-21亿到+21亿,描述10亿为什么不够?


存个10,再存个亿,只要能认识就行了!再说,计算机又不是计算器... ...


1 + 2 + 3 + ... + 10亿
粗略计算: (10亿 * 5 亿)
也就是 10位数 * 5位数,结果为约50位,而long只能表示不到20位
故long是不行的!
上面很多人说long就可以,纠正一下.呵呵,许BigInteger


楼上的算法很可怕,10位数*5位数=50位数?把我都整晕了,做个试验才发现不对1000*1000=1000000.
才7位,不是16位!
int[] num = new int[1000];1000位够大吗?

int[] num1 = new int[1000];
int[] num2 = new int[1000];
int[] num3 = new int[1001];
//给num1和num2赋值
int m = 0;
for (m = 0; m < 1000; m++) {
if (num1[m] + num2[m]+num3[m] >= 10) {
num3[m+1] += 1;
num3[m] += num1[m] + num2[m] - 10;
} else{
num3[m]+=num1[m]+num2[m];
}
}
这个就能算出来lz那个1+2+...+10亿了!首先数学公式:sum=(10亿+1)*5亿=50亿亿+5亿
50亿亿就是50后有18个0,不是50位;用num1表示就是,num1[19]=1,5亿就是num2[9]=1.
计算得:00000000010000000001倒过来念!

不知道1000位怎么读,大家研究一下,给它起个名字吧!


实在还不够,就用字符吧,要多少位都行,只是算法稍微复杂一点。


楼下的说的对
10亿 * 5亿 约19位,不是50位,糊涂了 ,呵呵
就这个问题可用long
谢谢指正


norwolfli(烟灰) 不可用数组啊。


10亿很大么?


用数组有什么问题?


↑返回目录
前一篇: private 方法 和 final 方法 在继承中的区别! 老鸟进!!!!!
后一篇: 急!!!JAVA中怎么获取LINUX的环境变量?