`

java中的大数处理-BigInteger和BigDecimal

    博客分类:
  • java
阅读更多
【转】JAVA大数处理(BigInteger,BigDecimal)
转自:http://hi.baidu.com/shouzhewei/item/ad630c7261c44418d0dcb312

     在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大
这两个类都在java.math.*包中,因此每次必须在开头处引用该包。

Ⅰ基本函数:
1.valueOf(parament); 将参数转换为制定的类型
   比如 int a=3;
       BigInteger b=BigInteger.valueOf(a);
     则b=3;
         String s=”12345”;
       BigInteger c=BigInteger.valueOf(s);
       则c=12345;
2.add(); 大整数相加
   BigInteger a=new BigInteger(“23”);
   BigInteger b=new BigInteger(“34”);
   a.add(b);
3.subtract(); 相减
4.multiply(); 相乘
5.divide();    相除取整
6.remainder(); 取余
7.pow();   a.pow(b)=a^b
8.gcd();   最大公约数
9.abs(); 绝对值
10.negate(); 取反数
11.mod(); a.mod(b)=a%b=a.remainder(b);
12.max(); min();
13.punlic int comareTo();
14.boolean equals(); 是否相等
15.BigInteger构造函数:
   一般用到以下两种:
   BigInteger(String val);
将指定字符串转换为十进制表示形式;
   BigInteger(String val,int radix);
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger
Ⅱ.基本常量:
   A=BigInteger.ONE    1
B=BigInteger.TEN    10
C=BigInteger.ZERO   0
Ⅲ.基本操作
1.   读入:
用Scanner类定义对象进行控制台读入,Scanner类在java.util.*包中
Scanner cin=new Scanner(System.in);// 读入
while(cin.hasNext())   //等同于!=EOF
{
   int n;
   BigInteger m;
   n=cin.nextInt(); //读入一个int;
   m=cin.BigInteger();//读入一个BigInteger;
System.out.print(m.toString());
}
Ⅳ.运用
四则预算:
import java.util.Scanner;
import java.math.*;
import java.text.*;
public class Main
{
public static void main(String args[])
{
   Scanner cin = new Scanner ( System.in );
   BigInteger a,b;
   int c;
   char op;
   String s;
 
   while( cin.hasNext() )
   {
    a = cin.nextBigInteger();
    s = cin.next();
    op = s.charAt(0);
    if( op == '+')
    {
     b = cin.nextBigInteger();
     System.out.println(a.add(b));
    }
    else if( op == '-')
    {
     b = cin.nextBigInteger();
     System.out.println(a.subtract(b));
    }
    else if( op == '*')
    {
     b = cin.nextBigInteger();
     System.out.println(a.multiply(b));
    }
    else
    {
     BigDecimal a1,b1,eps;
     String s1,s2,temp;
     s1 = a.toString();
       a1 = new BigDecimal(s1);
     b = cin.nextBigInteger();
     s2 = b.toString();
     b1 = new BigDecimal(s2);
     c = cin.nextInt();
     eps = a1.divide(b1,c,4);
     //System.out.println(a + " " + b + " " + c);
     //System.out.println(a1.doubleValue() + " " + b1.doubleValue() + " " + c);
     System.out.print( a.divide(b) + " " + a.mod(b) + " ");
     if( c != 0)
     {
      temp = "0.";
      for(int i = 0; i < c; i ++) temp += "0";
      DecimalFormat gd = new DecimalFormat(temp);
      System.out.println(gd.format(eps));
     }
     else System.out.println(eps);
    }
   }
   }
}
补充:
        a=a.pow(b);
        a=a.stripTrailingZeros();
         d=a.toPlainString();
        if(d.charAt(0)=='0') d=d.substring(1);
分享到:
评论

相关推荐

    java笔试题算法-DelphiBigNumbers:Delphi的BigInteger和BigDecimal

    java笔试题算法大数 Delphi 的 BigInteger、BigDecimal 和 BigRational 这些是多精度BigInteger 、 BigDecimal和BigRational类型的实现,从头开始构建。 大整数 BigInteger是一个多精度整数。 它的大小仅受可用内存...

    java练习_大数运算_BigInteger.pdf

    总之,`BigInteger`是Java中处理大数运算的关键工具,它允许开发者在需要精确计算和不受限制的整数范围时进行操作。这个练习通过简单的示例展示了如何使用`BigInteger`进行大数乘法和取模运算,同时提供了其他基本...

    Java中的BigInteger类与BigDecimal类,细解,带例题

    使用时导包:java.math.BigInteger 作用:可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类...

    JAVA大数加法与乘法

    在这个主题"JAVA大数加法与乘法"中,我们将深入探讨如何使用`BigInteger`类来执行大数的加法和乘法操作。 `BigInteger`是Java中用于表示任意精度整数的类。它支持任意大小的整数,可以进行加法、减法、乘法、除法...

    java实现大数加法(BigDecimal)的实例代码

    在Java编程语言中,处理大数(大数据量的整数)加法时,通常会使用`java.math.BigDecimal`类。这个类提供了精确的浮点数运算,特别适合于需要高精度计算的情况,如金融计算或者复杂的数学运算。下面将详细讨论`...

    大数的 加 减 乘 除 开方运算Java版

    首先,`BigInteger`类是Java标准库中专门用来处理任意精度整数的类,它可以存储和操作比`long`类型更大的数值。这个类提供了丰富的算术方法,包括加法、减法、乘法、除法和平方根等操作。 1. **大数加法**: `Add....

    Java编写的大数运算

    Java提供了内置的`BigInteger`类和`BigDecimal`类来支持大数运算,这两个类位于`java.math`包下。本项目“Java编写的大数运算”显然就是基于这些类实现了一套自己的大数计算解决方案。 `BigInteger`类是用于表示...

    java 大数加减法及乘法

    总的来说,理解和熟练使用`BigInteger`和`BigDecimal`类是Java开发中的一个重要技能,尤其在处理大数据量和高精度计算的场景下。通过自定义类的方式,你可以进一步扩展这些功能,比如添加除法、开方等复杂运算,或者...

    java大数类.pdf

    总的来说,`BigInteger`和`BigDecimal`这两个类是Java中处理大数和高精度计算的核心工具,它们提供了丰富的功能来满足各种复杂的数学运算需求。在实际编程中,合理利用这两个类,可以有效地处理大数据量和高精度计算...

    java大数类[参考].pdf

    总之,`BigInteger`和`BigDecimal`是Java中处理大数的利器,它们提供了精确的数学运算,弥补了基本类型在处理大数时的不足。在需要进行高精度计算或超出基本类型范围的整数操作时,这两个类是不可或缺的工具。

    acm之java大数用法

    java.util 中 BigInteger 的使用; java.math 中 BigDecimal 的使用;&& so on. . .

    JAVA大数相乘

    "JAVA大数相乘"这个主题主要涉及到Java中的`BigInteger`类,它提供了对任意精度整数的支持,能够有效地处理大数运算,包括加法、减法、乘法、除法以及更复杂的数学操作。`BigInteger`类是Java标准库`java.math`包的...

    nc.jar.zip_java 矩阵_java 计算_大数_大数计算 java_矩阵

    Java的大数类`java.math.BigInteger`和`java.math.BigDecimal`提供了对任意大小整数和浮点数的操作,如加、减、乘、除、比较等,以及模运算、幂运算等功能。这对于金融计算、密码学、精确计算等场景非常有用。 接...

    java大数类[参照].pdf

    Java中的大数类主要包括`BigInteger`和`BigDecimal`,它们都是在`java.math`包下定义的,专门用于处理超出常规整型(如int、long)和浮点型(如float、double)范围的数值。这两个类在软件开发中尤其在金融计算、...

    Java语言程序设计-基础篇-中文ppt-第十四章.ppt

    总的来说,这一章涵盖了Java中面向对象编程的关键概念,包括抽象类的使用、接口的定义与实现、日期处理、事件处理、泛型、装箱与拆箱、大数运算以及自定义数据类型的设计。这些知识点都是编写复杂、灵活且可扩展的...

    大数相加 java

    本篇文章将详细讲解如何在Java中实现大数相加,同时考虑异常处理和代码的可拓展性。 首先,Java标准库提供了一个名为`BigInteger`的类,用于处理任意精度的大整数。但是,为了理解基本的算法和提升编程能力,我们...

    java编程实现两个大数相加代码示例

    1. 大数运算:在Java编程中,实现大数运算是通过BigInteger和BigDecimal两种方法。这两种方法分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数)。 2. 数组操作:在Java编程中,数组是...

    java编译的大整数程序可加减求绝对值开平方

    在Java编程语言中,处理大整数是一项常见的需求,特别是在金融、加密算法或者科学计算等领域。当数值超过了Java内置类型如`int`或`long`的表示范围时,我们需要使用特殊的数据类型来处理这些大整数。Java提供了一个...

    bigNumber:用于将BigDecimal和BigInteger结合在一起的Java的bignum库

    在Java编程语言中,处理大数据计算时,我们经常会遇到`BigInteger`和`BigDecimal`这两个类。`BigInteger`提供了任意精度的整数运算,而`BigDecimal`则提供了任意精度的浮点数运算。然而,在实际应用中,我们可能需要...

    计算圆周率的java程序

    在Java编程语言中,计算圆周率是一项挑战性的任务,特别是在处理大数运算时。圆周率(Pi)是数学中的一个无理数,表示一个圆的周长与其直径之比,通常用希腊字母π表示。Java提供了多种方法来计算圆周率,包括基本...

Global site tag (gtag.js) - Google Analytics