当前位置: 代码迷 >> 综合 >> java BigInteger BigDecimal类
  详细解决方案

java BigInteger BigDecimal类

热度:24   发布时间:2024-01-18 23:46:59.0

BigInteger
初始化方法
BigInteger(String val, int radix) radix 是进制
BigInteger(String val)

记得 构造方法要用new BigInteger();
BigInteger bn = new BigInteger(“1234567890123451234567890123456789”);
BigInteger bi = new BigInteger(“9876543210987659876543219987654321”);

常用静态变量
BigInteger.ONE
BigInteger.ZERO

常用方法

BigInteger.asb()
a.add(BigInteger b)
a.and(BigInteger b)
a.divide(BigInteger b)
a.multiply(BigInteger b)
a.subtract(BigInteger b)
a.gcd(BigInteger b) 
a.max(BigInteger b)
a.min(BigInteger b)
a.remainder(BigInteger b) //取余运算
a.mod(BigInteger c) mod

注意BigInteger BigDecimal String都是immutable的
所有的操作,都会生成一个新的BigInteger,对原来的BigInteger不会有任何的改变

BigDecimal
BigDecimal:可以精确地表示任意精度的小数,同时在运算过程中不会丢失任何信息。

构造方法
BigDecimal(BigInteger a)
BigDecimal(String a)

计算方式和上文中BIgInteger一样,但是存在标度

import java.util.*;
import java.math.*;
public class Combination{public static BigInteger Fac(BigInteger a){if(a==BigInteger.ZERO) return BigInteger.ONE;return a.multiply(Fac(a.subtract(BigInteger.ONE)));}public static BigInteger Combination(BigInteger a,BigInteger b){return Fac(a).divide(Fac(b).multiply(Fac(a.subtract(b))));}public static void main(String[] args) {BigInteger a;BigInteger b;// BigInteger c=new BigInteger("22222");Scanner in = new Scanner(System.in);a = in.nextBigInteger();b = in.nextBigInteger();System.out.println(Combination(a,b));}}

注意,如果输入33333 1 会造成stackoverflow(堆栈溢出)
因为递归深度太大。

bigdecimal的一般使用和biginteger差不多

  相关解决方案