Java大数计算

    写过那些模拟大数相乘的代码就之后,就希望这样的东西能够封装起来,省得每次写起来容易出错。
    Java中有提供特大整数和浮点数的类,以下是来自《Java SE6.0 编程指南》的实例。
    1.整数

点击(此处)折叠或打开

  1. package wyf.jc;
  2. import java.math.*;
  3. public class Sample12_14
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         //创建了两个BigInteger对象bi1与bi2
  8.         BigInteger bi1=new BigInteger("111119223372036854775808");
  9.         BigInteger bi2=new BigInteger("111110000000000000000000");
  10.         //声明了一个BigInteger引用bi3
  11.         BigInteger bi3;
  12.         System.out.println("bi1 = "+bi1+",bi2 = "+bi2+"。");
  13.         //使用加操作
  14.         bi3=bi1.add(bi2);
  15.         System.out.println("bi1 + bi2 = "+bi3);
  16.         //使用减操作
  17.         bi3=bi1.subtract(bi2);
  18.         System.out.println("bi1 - bi2 = "+bi3);
  19.         //使用乘操作
  20.         bi3=bi1.multiply(bi2);
  21.         System.out.println("bi1 * bi2 = "+bi3);
  22.         //使用除操作
  23.         bi3=bi1.divide(bi2);
  24.         System.out.println("bi1 / bi2 = "+bi3);
  25.         //使用求余操作
  26.         bi3=bi1.mod(bi2);
  27.         System.out.println("bi1 % bi2 = "+bi3);
  28.         //使用取负数操作
  29.         bi3=bi1.negate();
  30.         System.out.println("-bi1 = "+bi3);
  31.         //取bi1的符号
  32.         if(bi1.signum()==1)
  33.         {
  34.             System.out.println("bi1 为正数,其符号为'+'!!!");
  35.         }            
  36.         //比较bi1与bi2的大小
  37.         if(bi1.compareTo(bi2)>0)
  38.         {
  39.             System.out.println("bi1 大于 bi2 !!!");
  40.         }            
  41.     }
  42. }
    整数运算范围超过long型
    2.浮点数
    

点击(此处)折叠或打开

  1. package wyf.jc;
  2. import java.math.*;
  3. public class Sample12_16
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         //分别创建值为3.8与0.7的BigDecimal对象bd1与bd2
  8.         BigDecimal bd1=new BigDecimal("3.8");
  9.         BigDecimal bd2=new BigDecimal("0.7");
  10.         //创建值为3.800的BigDecimal对象bd3
  11.         BigDecimal bd3=new BigDecimal("3.800");
  12.         //声明一个BigDecimal类型的引用bd4
  13.         BigDecimal bd4;
  14.         //打印对象bd1、bd2与bd3中封装的值
  15.         System.out.println("bd1 = "+bd1+",bd2 = "+bd2+",bd3 = "+bd3+"。");
  16.         //使用加操作
  17.         bd4=bd1.add(bd2);
  18.         System.out.println("bd1 + bd2 = "+bd4);
  19.         //使用减操作
  20.         bd4=bd1.subtract(bd2);
  21.         System.out.println("bd1 - bd2 = "+bd4);
  22.         //使用乘操作
  23.         bd4=bd1.multiply(bd2);
  24.         System.out.println("bd1 * bd2 = "+bd4);
  25.         //使用除操作
  26.         bd4=bd1.divide(bd2,BigDecimal.ROUND_HALF_DOWN);
  27.         System.out.println("bd1 / bd2 = "+bd4);
  28.         bd4=bd3.divide(bd2,BigDecimal.ROUND_HALF_DOWN);
  29.         System.out.println("bd3 / bd2 = "+bd4);        
  30.         //将bd1与bd2进行比较
  31.         bd2=new BigDecimal("3.800");
  32.         if(bd1.compareTo(bd2)==0)
  33.         {
  34.             System.out.println("bd1 = "+bd1+" bd2 = "+bd2+" 则bd1与bd2是相等的!!");
  35.         }            
  36.     }
  37. }

    用于进行精确计算
阅读(69) | 评论(0) | 转发(0) |
0

上一篇:防SQL注入

下一篇:Java String

给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值