java 中如何存取和操作10亿这么大的数? 老鸟进。 比如 写个方法 计算 1+2+3+4。。10亿并返回结果。 怎么个做法呀。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计使用long就可以,要么你就换成double. 同意楼上 & 接分 使用BigDecimal decimal = new BigDecimal()可以 java的int型是-21亿到+21亿之间。long型是这个数的平方。用long型足以描述这世界上当今技术需要描述数量所能达到极限。 int 用4字节存储 ,应该够了,不够用long int肯定是不够用,但是在这里long就已经够用了,但是如果再往上就可以用BigIntegerlong型远远未能满足一些复杂计算上的极限! 更大的话就用BigInteger。自己去查一下文档。 我做RSA时用BigInteger,可以处理200位的整数,够用了吧 int可以描述-21亿到+21亿,描述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(烟灰) 不可用数组啊。 JFileChooser的SETFILEFILTER问题 java中大数类问题 初学者 今天刚装了GUI生成器插件,在哪可以学习到运用。 java新手? JCreator LE3.5里没有动态随笔代码生成功能,怎么配置???? java返回值的问题 ,急!! Java方向跳槽求解惑。 求救windows文件路径问题 请推荐比较好的网上软件店 高分提问 对GUI略知一二的都可帮我解决,在此谢过了 java 中是怎么把整型的数转换成字符串的
粗略计算: (10亿 * 5 亿)
也就是 10位数 * 5位数,结果为约50位,而long只能表示不到20位
故long是不行的!
上面很多人说long就可以,纠正一下.呵呵,许BigInteger
才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
谢谢指正