易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA大数运算

有一道这样的笔试题,对于初学者可能有些难度:
用JAVA 实现算术表达式(1234324234324 + 8938459043545)/5 + 343434343432.59845
因为JAVA语言中的long 定义的变量值的最大数受到限制,例如123456789987654321这样的整数就不能存放在long类型的变量中,如果这样两个大数相加或相乘,产生的结果会更大。比如,JAVA语言中如果使用long l = 1000000000这样定义没错,但如果加上2000000000变成 1000000000+2000000000测试结果就为-1294967296, 成了负数。原因就是结果数太大,无法表示此结果数。那么怎样做才能把上述计算题给解答出来呢?
这里我们采用阵列法,比如
long  a = 123456789876
long  b = 123412341234
首先我们可以定义二个数组,分组存放这些数字
long ary_a[3];
long ary_b[3];
可以把这两个数分别分解为三个部分,每个部分都是四位,也就是:
ary_a [0] = 1234;
ary_a [1] = 5678;
ary_a [2] = 9876;
ary_b [0] = 1234;
ary_b [1] = 1234;
ary_b [2] = 1234;
接下来的事情就是进位了
来一个小点的数,比如 38 + 25 分解一下
个位相加 8+5=13 需进位 , 结果的个位为3
十位相加 1+3+2 = 6
可以得到一个规律
进位数 = 13 / 10
个位所留下来的位 = 13 % 10
程序中如下实现
public class Test1 {
public static void main(String[] args) {
int a = 38;
int b = 25;

int[] ary_a = {3, 8};
int[] ary_b = {2, 5};

int r_1 = ary_a[0] + ary_b[0];
int r_2 = ary_a[1] + ary_b[1];

/* r_1 = 5, r_2 = 13 */
System.out.println(r_1);
System.out.println(r_2);

/* 结果的进位 */
int carry = r_2 / 10;
System.out.println(carry);

/* 结果的个位 */
int g = r_2 % 10;
System.out.println(g);

/* 十位 */
int s = carry+r_1;
System.out.println(s);

/*结果为63*/
System.out.println(s+""+g);

}
}

如果是三位数,以此类推
下面给出简单示例
package com;
public class BigNumberOperation {

/*加法*/
public int[] add(int[] f, int[] s, int n) {

/*定义余数,初始为0*/
int carry = 0;

/*定义返回的数组*/
int[] c = new int[f.length];
/*遍历传入的两个数组,分别计算*/
for(int i = f.length - 1; i >= 0; i--) {


相关文档:

Cavaj Java Decompiler 反编译器

Cavaj Java Decompiler is a graphical freeware utility that reconstructs Java source code from CLASS files. You can decompile Java applets, JAR and ZIP files, producing accurate Java source code. Browse the reconstructed source code with the Class View for instant access to methods and fields. The pr ......

Java加密技术(七)(1) 豆豆网

豆豆网   技术应用频道   2009年06月10日  【字号:小中大】 收藏本文
JProfiler memcached JavaCC EclEmma Jester Java加密技术(七)。
  ECC
  ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。在软件注册 ......

java默认包的使用

最近在写java测试程序的时候突然遇到了一个问题:java默认包中的public类是不能在其他包中直接调用的
      首先,总结一下默认包中类的使用范围,java默认包中的类可以实例化其它包中的public类,但是其它包中的类是不能显式实例化默认包中的类这个特性在JDK1.4以后的版本成立;
  & ......

java 数据存储器

        前些天和一个C++程序员聊天时,聊到一些对象、数组存储空间时,由于两人都不是大鸟,之前也看过一些java存储数据的资料,但都是过目便忘。也没有进行总结过。下面是转载过来,感觉总结的很全面。
       java对象内存机制:http://java.chinait ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号