java里的BigInteger和BigDecimal

java

阶乘:

View Code

 1 import java.io.*;

2 import java.math.*;

3 public class BigInteger_factorial {

4   public static void main(String[] args) throws IOException{

5    BigInteger s = BigInteger.valueOf(1);

6    for ( int i = 1;i<=500 ; i++){

7    s = s.multiply(BigInteger.valueOf(i));

8   System.out.println(s);

9   }

10   }

11 }

大数计算hrbustoj1582:

View Code

 1 import java.math.*;

2 import java.util.*;

3 import java.io.*;

4

5 public class Main {

6 Scanner cin = new Scanner(new BufferedInputStream(System.in));

7 public void solve() {

8 String s1, s2;

9 s1 = cin.next();

10 s2 = cin.next();

11 if (s1.charAt(0) == '+') s1 = s1.substring(1, s1.length());

12 if (s2.charAt(0) == '+') s2 = s2.substring(1, s2.length());

13 BigInteger a = new BigInteger(s1), b = new BigInteger(s2);

14 System.out.println(a.add(b));

15 }

16 public static void main(String args[]) {

17 Main test = new Main();

18 while (test.cin.hasNext()) {

19 test.solve();

20 }

21 }

22 }

BigInteger和BigDecimal可以说是acmer选择java的首要原因。 函数:add, subtract, divide, mod, compareTo等,其中加减乘除模都要求是

BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf().

BigInteger

主要API

将字符串转换成BigInteger

BigInteger(String val)                 将 BigInteger 的十进制字符串表示形式转换为 BigInteger。

BigInteger(String val, int radix)            将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。

BigInteger的加法

BigInteger

add(BigInteger val)      返回其值为 (this + val) 的 BigInteger。

BigInteger

and(BigInteger val)      返回其值为 (this & val) 的 BigInteger。

BigInteger的减法

BigInteger

subtract(BigInteger val)      返回其值为 (this - val) 的 BigInteger。

BigInteger的乘法

BigInteger

multiply(BigInteger val)      返回其值为 (this * val) 的 BigInteger。

大数求余:

BigInteger

mod(BigInteger m)       返回其值为 (this mod m) 的 BigInteger。

 大数除法

BigInteger

divide(BigInteger val)     返回其值为 (this / val) 的 BigInteger。

其他一些

BigInteger

gcd(BigInteger val)                          返回一个 BigInteger,其值是 abs(this) 和 abs(val) 的最大公约数。

BigInteger

max(BigInteger val)             返回此 BigInteger 和 val 的最大值。

BigInteger

min(BigInteger val)              返回此 BigInteger 和 val 的最小值。

BigDecimal类

主要API:

将字符串转换成BigDecimal

BigDecimal(String val)                                              将 BigDecimal 的字符串表示形式转换为 BigDecimal。

BigDecimal(String val,MathContext mc)                     将 BigDecimal 的字符串表示形式转换为 BigDecimal,接受与 BigDecimal(String) 构造方法

                                                                                相同的字符串(按照上下文设置进行舍入)。

两个BigDecimal的相加

BigDecimal

add(BigDecimal augend)                        返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。

BigDecimal

add(BigDecimal augend,MathContext mc)返回其值为 (this + augend) 的 BigDecimal(根据上下文设置进行舍入)。

两个BigDecimal的相减

BigDecimal

subtract(BigDecimal subtrahend)              返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。

BigDecimal

subtract(BigDecimal subtrahend,MathContext mc)返回其值为 (this - subtrahend) 的 BigDecimal(根据上下文设置进行舍入)。

两个BigDecimal的相除:

BigDecimal

divide(BigDecimal divisor)                       返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());

                                                              如果无法表示准确的商值(因为它有无穷的十进制扩展),则抛出 ArithmeticException。

BigDecimal

divide(BigDecimal divisor, int roundingMode)        返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。

BigDecimal

divide(BigDecimal divisor, int scale, int roundingMode)   返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

BigDecimal

divide(BigDecimal divisor, int scale,RoundingMode roundingMode) 返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

BigDecimal

divide(BigDecimal divisor,MathContext mc)                返回其值为 (this / divisor) 的 BigDecimal(根据上下文设置进行舍入)。

BigDecimal

divide(BigDecimal divisor,RoundingMode roundingMode)      返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。

计算BigDecimal的N次幂

BigDecimal

pow(int n)                                返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。

BigDecimal

pow(int n, MathContext mc)                       返回其值为 (thisn) 的 BigDecimal。

有关转换成字符串的方法

String

toEngineeringString()                              返回此 BigDecimal 的字符串表示形式,需要指数时,则使用工程计数法。

String

toPlainString()                                  返回不带指数字段的此 BigDecimal 的字符串表示形式。

String

toString()                                    返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。

以上是 java里的BigInteger和BigDecimal 的全部内容, 来源链接: utcz.com/z/390581.html

回到顶部