源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java中两个大数之间的相关运算及BigInteger代码示例

  • 时间:2021-08-30 16:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java中两个大数之间的相关运算及BigInteger代码示例
Java中两个大数之间的相关运算及BigInteger两段实例代码,具体如下。 [b]大数相减[/b]
import java.util.Scanner;
/*
 进行大数相减,只能对两个正数进行相减
*/
public class BigNumber
{
 public static void main(String[] args)
   {
  Scanner scan=new Scanner(System.in);
  String a,b;
  while (scan.hasNext())
      {
   BigNumber big=new BigNumber();
   a=scan.nextLine();
   b=scan.nextLine();
   System.out.println(big.bigNumberSub(a,b));
  }
 }
 public String bigNumberSub(String x,String y)
   {
  //String result=null;
  char[] a=x.toCharArray();
  char[] b=y.toCharArray();
  int lenA=a.length;
  int lenB=b.length;
  int len=lenA>lenB?lenA:lenB;
  int[] result=new int[len];
  //字符串反转
  char[] A=new char[lenA];
  char[] B=new char[lenB];
  for (int i=0;i<lenA;i++)
      {
   A[i]=a[lenA-i-1];
  }
  for (int j=0;j<lenB;j++)
      {
   B[j]=b[lenB-j-1];
  }
  //判断最终结果的正负
  char sign='+';
  if (lenA<lenB)
      {
   sign='-';
  } else if(lenA>lenB)
      {
   sign='+';
  } else
      {
   for (int i=lenA-1;i>=0;i--)
         {
    if (A[i]<B[i])
            {
     sign='-';
     break;
    } else if(A[i]>B[i])
            {
     sign='+';
     break;
    }
   }
  }
  //      
  int aint,bint;
  for (int i=0;i<len;i++)
      {
   aint=i<lenA?A[i]-'0':0;
   bint=i<lenB?B[i]-'0':0;
   if (sign=='+')
         {
    result[i]=aint-bint;
   } else 
         {
    result[i]=bint-aint;
   }
  }
  //借位处理
  for (int j=0;j<len;j++)
      {
   if (result[j]<0)
         {
    result[j+1]=result[j+1]-1;
    result[j]=result[j]+10;
   }
  }
  //将结果对应为0的位置取消掉
  StringBuilder sb=new StringBuilder();
  Boolean flag=true;
  //防止结果集中的地位出现0
  if (sign=='-')
      {
   sb.append(sign);
  }
  for (int i=len-1;i>=0;i--)
      {
   if (result[i]==0&&flag)
         {
   } else
         {
    sb.append(result[i]);
    flag=false;
   }
  }
  return sb.toString();
  //return result;
 }
}
结果: [img]http://files.jb51.net/file_images/article/201711/2017112095213173.png?2017102095224[/img] 在Java中,还可以通过BigInteger类来解决精度问题。
import java.util.Scanner;
import java.math.BigInteger;
/*
 进行大数相加,
*/
public class BigNumber
{
 public static void main(String[] args)
   {
  Scanner scan=new Scanner(System.in);
  while (scan.hasNext())
      {
   BigInteger b1=new BigInteger(scan.nextLine());
   BigInteger b2=new BigInteger(scan.nextLine());
   System.out.println(b1.add(b2));
   //System.out.println(000);
  }
 }
}
结果 [img]http://files.jb51.net/file_images/article/201711/2017112095412943.png?2017102095426[/img] 接着再看一则代码示例:
/**
 * 大数运算
 * BigInteger
 * 求91的5次方
 * 求它除以100的余数
 * 大数运算Biginteger类的方法调用
 */
package com.test1;
import java.math.*;
import java.math.BigInteger;
public class test100 {
 
  /**
   * @param args
   */
  static BigInteger k=BigInteger.valueOf(1);
  static BigInteger j=BigInteger.valueOf(91);
  static BigInteger n;
  BigDecimal l=new BigDecimal("100");
  static BigInteger m=new BigInteger("100");
  public static void main(String[] args) {
    // TODO Auto-generatedmethod stub
   
//   k=BigInteger.valueOf(1);
//   k=new BigInteger("1");
    for(int i=1;i<=5;i++){
      k=k.multiply(j);
      System.out.println(k.toString());
//     n=k.remainder(m);
      n=k.remainder(m);
      System.out.println(n.toString());
      
    }
 
  }
 
}
结果: [img]http://files.jb51.net/file_images/article/201711/20171120100050946.png?201710201012[/img] [b]总结[/b] 以上就是本文关于Java中两个大数之间的相关运算及BigInteger代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站: [url=http://www.1sucai.cn/article/127893.htm][b]java算法实现红黑树完整代码示例[/b][/url] [url=http://www.1sucai.cn/article/126252.htm][b]java实现的各种排序算法代码示例[/b][/url] [url=http://www.1sucai.cn/article/123400.htm][b]Java小程序计算圆周率代码[/b][/url] 如有不足之处,欢迎留言指出。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部