java核心技术卷I中的细节(2- 大数)

x33g5p2x  于2022-04-23 转载在 Java  
字(0.9k)|赞(0)|评价(0)|浏览(260)

大数

如果基本的证书和浮点数精度不能满足需求,那么可以使用java.math包中的两个类:BigInteger、BigDecimal。

这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现任意精度的整数运算,BigDecimal类实现任意精度的浮点数运算。

例如:

public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("123456789987654321123456789");
        System.out.println("BigInteger:"+bigInteger);

        BigDecimal bigDecimal = new BigDecimal("12345678998.7654321123456789");
        System.out.println("BigDecimal:"+bigDecimal);
    }

使用静态的valueOf()方法可以将普通的数值转换为大数。

BigInteger n = BigInteger.valueOf(10000);

但是,我们熟悉的 “+ - * / ”算数运算符不能处理大数,而要适应大数类提供的add()、substract()、multiply()、divide()方法。

例如:

public static void main(String[] args) {

        BigInteger a = new BigInteger("123456789");
        BigInteger b = new BigInteger("987654321");

        System.out.println("a = " + a);
        System.out.println("b = " + b);

        BigInteger c = a.add(b);    //c = a + b
        System.out.println("a + b = " + c);

        BigInteger d = a.multiply(b.add(c));    //d = a * (b + c)
        System.out.println("a * (b + c) = " + d);

    }

相关文章

微信公众号

最新文章

更多