- 浏览: 1069838 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
算法1:
算法2:
8种基本数据类型中,long类型所能表示的整数范围是最大的,但还是有限的。另外,基本数据类型中的整数还有一个问题,那就是不是每个数都能够正确的取负数。例如,对int型而言,“-2147483648”取负就不能得到正确的结果,对其他整数类型也有这个问题。
为了解决这些问题,Java中专门提供了用来进行不限制大小的整数计算的类——java.math.BigInteger。该类可以对任意大小的整数进行操作,不过在进行计算的时候是通过方法调用进行的,而不是使用算术运算符
BigInteger b1=new BigInteger("11111111111111111111111111");
BigInteger b2=new BigIntege("22222222222222222222222222");
System.out.println("加法运算:");
System.out.println("b1:"+b1);
System.out.println("b2:"+b2);
System.out.println("相加结果值");
System.out.println("相加后的值:"+b1.add(b2));
public static String add(String add1,String add2){ System.out.println(add1); System.out.println(add2); String addNum1 = (new StringBuffer(add1)).reverse().toString(); String addNum2 = (new StringBuffer(add2)).reverse().toString(); int length1 = addNum1.length(); int length2 = addNum2.length(); //tempAdd1的位数多余tempAdd2 String tempAdd1 = addNum1 ; String tempAdd2 = addNum2; if(length1<length2){ tempAdd1 = addNum2; tempAdd2 = addNum1; } StringBuffer sb = new StringBuffer(); int jinWei = 0; int tailNum = 0; for(int i=0;i<tempAdd2.length();i++){ int temp1 = Character.digit(tempAdd2.charAt(i),10); int temp2 = Character.digit(tempAdd1.charAt(i),10); int total = temp1+ temp2+jinWei; if(total>9){ jinWei = 1; tailNum = Character.digit(String.valueOf(total).charAt(1), 10); }else{ jinWei = 0; tailNum = total; } sb.append(tailNum); } for(int i=tempAdd2.length();i<tempAdd1.length();i++){ int temp = Character.digit(tempAdd1.charAt(i),10); int total = temp + jinWei; if(total>9){ jinWei = 1; tailNum = 0; sb.append(tailNum); }else{ sb.append(total); System.out.println(i+1); sb.append(tempAdd1.substring(i+1)); break; } } if(jinWei>0){ sb.append(jinWei); } System.out.println(sb.reverse().toString()); return null; }
算法2:
/** * *@parama加数字符串1 *@paramb加数字符串2 *@return结果字符串 *分析: *1、取得两个字符串的长度 *2、把两个的长度做比较,并得出较长的长度,及较短的长度 *3、把长度较短的加数字符串,在左面补0,使之与较长的字符串一样长 *4、从最高位,一个个数的取出来相加,当然首先得转换为整型 *5、设置进位,如果两个数相加及加上进位大于等于10,并且这不是最左边一个字符相加,相加结果等于 * (取出1+取出2+进位)-10,并把进位设为1;如果没有大于10,就把进位设为0,如些循环,把 * 相加的结果以字符串的形式结合起来,就得到最后的结果 */ String doAdd(String a, String b) { String str = ""; int lenA = a.length(); int lenB = b.length(); int maxLen = (lenA > lenB) ? lenA : lenB; int minLen = (lenA < lenB) ? lenA : lenB; String strTmp = ""; for (int i = maxLen - minLen; i > 0; i--) { strTmp += "0"; } //把长度调整到相同 if (maxLen == lenA) { b = strTmp + b; } else { a = strTmp + a; } int JW = 0;//进位 for (int i = maxLen - 1; i >= 0; i--) { int tempA = Integer.parseInt(String.valueOf(a.charAt(i))); int tempB = Integer.parseInt(String.valueOf(b.charAt(i))); int temp; if (tempA + tempB + JW >= 10 && i != 0) { temp = tempA + tempB + JW - 10; JW = 1; } else { temp = tempA + tempB + JW; JW = 0; } str = String.valueOf(temp) + str; } return str; }
8种基本数据类型中,long类型所能表示的整数范围是最大的,但还是有限的。另外,基本数据类型中的整数还有一个问题,那就是不是每个数都能够正确的取负数。例如,对int型而言,“-2147483648”取负就不能得到正确的结果,对其他整数类型也有这个问题。
为了解决这些问题,Java中专门提供了用来进行不限制大小的整数计算的类——java.math.BigInteger。该类可以对任意大小的整数进行操作,不过在进行计算的时候是通过方法调用进行的,而不是使用算术运算符
BigInteger b1=new BigInteger("11111111111111111111111111");
BigInteger b2=new BigIntege("22222222222222222222222222");
System.out.println("加法运算:");
System.out.println("b1:"+b1);
System.out.println("b2:"+b2);
System.out.println("相加结果值");
System.out.println("相加后的值:"+b1.add(b2));
发表评论
-
个人草稿使用
2017-08-19 09:02 0深入理解JVM: http://www.cnblogs.co ... -
Thread.setDaemon详解
2015-04-24 21:31 921java中线程分为两种类型:用户线程和守护线程。通过Threa ... -
怎么使用 ConcurrentHashMap 才能是线程安全的?
2015-04-13 11:54 1519public class test { public ... -
21,tomcat关闭钩子
2014-12-31 10:36 736在很多环境下,在关闭应用程序的时候需要做一些清理工作。问题在于 ... -
Java NIO使用及原理分析 (一) 【转载】
2014-10-24 00:04 496【转载】: http://blog.csdn.net/wuxi ... -
Java 两个集合取交集
2014-10-14 21:16 3145public static Set intersectionS ... -
Calendar类roll和add的区别
2014-10-10 22:28 504import java.text.SimpleDateForm ... -
Gson通过借助TypeToken获取泛型参数的类型的方法
2014-09-30 00:26 638[size=medium]最近在使用Goo ... -
HashMap的遍历效率讨论
2014-09-27 20:41 842经常遇到对HashMap中的key和value值对的遍历操作, ... -
Java 泛型
2014-06-26 12:44 867关键字说明 ? 通配符类型 <? extends T&g ... -
Java泛型集合的理解
2014-06-26 00:05 515[size=medium]什么是泛型? 泛型(Generic ... -
关于java字节码框架ASM的学习
2014-06-19 19:22 899一、什么是ASM ASM是一个java字节码操纵框架, ... -
Java动态代理详解
2014-06-19 17:41 871Java动态代理详解: http: ... -
Java内存,字符串文章收集
2014-06-18 16:24 740java--String常量池问题的几个例子 . http:/ ... -
Java内存解析
2014-06-18 11:48 787栈、堆、常量池等虽同 ... -
Java的堆与非堆内存
2014-01-07 10:59 727堆(Heap)和非堆(Non-heap)内存 按照官方的说法: ... -
JMX 资料收集
2014-01-07 10:53 484JavaSky的专栏 http://blog.csdn.net ... -
JAVA 注解示例 详解
2013-11-12 09:36 834注解(Annotation) 为我们在代码中天界信息提供了 ... -
Java 泛型详解
2013-11-11 22:35 840http://www.360doc.com/content/1 ... -
Java中的Enum的使用与分析
2013-11-09 12:49 830enum枚举类型:在实际问 ...
相关推荐
本文将深入探讨如何使用`BigInteger`类实现两个超大数的相加功能,并讨论相关的重要知识点。 首先,让我们了解`BigInteger`类的基本用法。`BigInteger`对象代表一个不可变的任意精度的整数。它提供了所有标准数学...
2. `add()` 方法:该方法用于将两个 BigInteger 对象相加。 例如:`BigInt1 = BigInt1.add(BigInt2);` 3. `subtract()` 方法:该方法用于将一个 BigInteger 对象从另一个 BigInteger 对象中减去。 例如:`BigInt1...
2. **BigInteger add(BigInteger val)**:返回两个 `BigInteger` 相加的结果。 3. **BigInteger and(BigInteger val)**:返回两个 `BigInteger` 按位与的结果。 4. **BigInteger andNot(BigInteger val)**:返回两个...
接着,通过调用 `add` 方法计算这两个数的和,最后打印出结果。 总的来说,`BigInteger` 提供了对大整数的高效且易于使用的支持。在处理大数运算时,它允许开发者避免手动实现复杂的算法,从而提高代码的可读性和...
在Java编程中,实现两个大数相加是一项常见的操作,特别是在高精度计算中。通常情况下,实现大数运算是通过BigInteger和BigDecimal两种方法。这两种方法分别表示不可变的任意精度的整数和不可变的有符号的任意精度的...
当两个数值超出标准整型或浮点型数据类型的范围时,Java提供了`java.math.BigInteger`类来处理这样的大数运算。这个类能够表示任意大小的整数,并提供了丰富的数学操作方法,包括加法。本篇文章将深入探讨如何使用`...
在这个例子中,`num1`和`num2`是两个大整数,通过`add()`方法得到它们的和,即使这个和超过了`Long`类型的表示范围。`BigInteger`类保证了结果的精确性,不会因为溢出而丢失数据。 `BigInteger`类的构造函数接受一...
在上述代码中,`b1.add(b2)`就是将`s1`表示的数和`s2`表示的数相加,结果仍然保存为`BigDecimal`类型的对象。最后,我们通过`System.out.println()`将结果打印出来。 虽然`BigDecimal`类提供了精确的计算,但是它的...
对于两个十进制数的加法,我们可以采用列竖式的方法,逐位相加,同时考虑进位。这个原理同样适用于大数的加法,只是处理的位数更多。对于两个大数 `a` 和 `b`,我们可以创建一个与 `a` 和 `b` 长度相同的数组来存储...
遍历两个大整数的每一位,逐位相加或相减,并处理进位或借位。由于是逆序存储,处理起来需要额外注意。 3. **乘法**:乘法可以使用Karatsuba算法或者更高效的FFT(快速傅里叶变换)算法。简单的方法是将大整数拆...
5. **库和框架**:许多编程语言提供了内置的大整数支持,如Python的`int`类型,Java的`BigInteger`类,或者C++的GMP库。这些库提供了便捷的方法来处理大整数的加法和其他算术运算,同时确保结果的精确性。 6. **...
描述中提到的“Java语言实现的大数相加程序”,意味着这个程序采用了特定的算法来处理两个大数的加法。简单算法可能是指逐位相加,类似于我们手工计算的方式,即从低位到高位,每两位进行相加,如有进位则向上一位...
在Java中,可以使用一个循环来遍历两个大整数的位,并使用一个额外的“进位”变量来跟踪任何超出单个数组位置的和。 以下是一个简单的伪代码表示大整数加法的过程: ```markdown 1. 初始化一个空的结果数组,长度...
在本题中,我们要实现的功能是从键盘接收两个任意大小的整数,然后计算并输出它们的和。这个任务涉及到的主要知识点包括大整数表示、输入输出处理、以及大整数的加法算法。 首先,我们需要理解如何在计算机中表示大...
1. **加法**:`add(BigInteger val)` - 两个BigInteger对象相加。 2. **减法**:`subtract(BigInteger val)` - 从一个BigInteger对象中减去另一个。 3. **乘法**:`multiply(BigInteger val)` - 两个BigInteger对象...
上述代码会创建两个`BigInteger`对象,分别表示12345678901234567890和98765432109876543210,然后将它们相加,结果存储在`sum`变量中。 2. **大数乘法**: 类似地,`BigInteger`提供了`multiply`方法来进行乘法...
3. **逐位相加**:遍历两个反转后的数字字符串,对于每一位,执行以下操作: - 获取两位的和,如果超过10,则将进位设置为1,当前位的结果设为和模10。 - 如果有进位,需要将其加到下一位的和上。 4. **处理负数*...