易截截图软件、单文件、免安装、纯绿色、仅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--) {


相关文档:

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

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

利用JAVA向Oracle数据库中插入大对象

通过JDBC,我们可以向oracle插入大对象,如图片,音频,长文本等,其插入方法有很多,这里演示一下通过流更新更新的形式插入CLOB大对象。
这是一个存储文本的例子,解释我会在程序中以注释的形式写出
/**
  * 将生成的表样存储到数据库
  *
  * @param htmlParam
  * @return
  */
  ......

java开发中Mysql中文乱码问题的解决

     Mysql在默认情况下建立表的字符编码是latin1,所以在插入中文时会出错。
eg:
1、查看表建立的sql源码:
1: sql命令:show create table users
2:
3: 结果:
4: CREATE TABLE `users` (
5: `userID` int(10) unsigned NOT NULL AUTO_INCREMENT,
6: `userName` varchar(4 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号