当前页面: 开发资料首页 → 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亿很大么?
用数组有什么问题?