超过 8 字节整数的可以试试 java.math.BigInteger,不存在值溢出的问题,至于内存溢出,我想java也没办法吧……你的整数大到让jvm吐血?
解决方案 »
- 哪里可以找到带选择框的树控件(JSP用),能返回选中的结点名字
- 使用gb2312 出现乱码
- 有好人提供一点比较好的网站模版吧,谢谢啦!
- 页面使用嵌入式字体eot存在的问题 100分请教
- 请教在java里如何实现插入一条记录时设定一个字段为最大数自动加1(也就是序号自动增加),谢谢!
- jsp页面播放大视频文件,本地绝对路径没问题,为什么类似http://127.0.0.1:81/XX.rm就不行了呢?老是报错,请高手赐教!
- 深圳公司招聘:JSP网站开发人员(地点:长沙)
- 下拉框的问题
- 哪有下载eclipse的多国语言包阿,大家帮忙!!
- 有关数据库的问题,求高手帮忙
- 请问我如何知道自己的jsp,servlet,taglib等等是什么版本的
- 我在WebLogic里写的Servlet老运行不了,不知道为什么,请高人指点。散高分求教
然后就和一般的 写发一样!
一般使用在比较庞大的数据运算的
比如亿单位级的加法或乘法
不过只有个思路 可以提供给你下 我还只是在概念阶段没有写出来
首先用数组拆分所要进行操作的数字,2个数组分别存放要进行操作的值
再声明几个变量用作进位操作
例如:
a[10],b[10],c[10]
3个数组
a[0],b[0]存放前10^3的数字
c[0]存放运算时候的进位问题
这样分段算出来以后
再吧计算结果
转换为string输出来
肯定不会出现数字的溢出情况了
个人意见,仅供参考
2.c++里面可以写个类封装一下,用字符串来算
3.c里面可以用结构体,和c++差不多
String v1 = "22222222222222222222222222222"; BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).toString();
如果要自己实现,就是用字符数组.
自己定义乘法方法,以前用C实现过
100!,后面有好多的0,也可以把它记下来.
* Multiplies int arrays x and y to the specified lengths and places
* the result into z.
*/
private int[] multiplyToLen(int[] x, int xlen, int[] y, int ylen, int[] z) {
int xstart = xlen - 1;
int ystart = ylen - 1; if (z == null || z.length < (xlen+ ylen))
z = new int[xlen+ylen]; long carry = 0;
for (int j=ystart, k=ystart+1+xstart; j>=0; j--, k--) {
long product = (y[j] & LONG_MASK) *
(x[xstart] & LONG_MASK) + carry;
z[k] = (int)product;
carry = product >>> 32;
}
z[xstart] = (int)carry; for (int i = xstart-1; i >= 0; i--) {
carry = 0;
for (int j=ystart, k=ystart+1+i; j>=0; j--, k--) {
long product = (y[j] & LONG_MASK) *
(x[i] & LONG_MASK) +
(z[k] & LONG_MASK) + carry;
z[k] = (int)product;
carry = product >>> 32;
}
z[i] = (int)carry;
}
return z;
}