菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
393
0

Java基础之——大数字运算

原创
05/13 14:22
阅读数 85435

BigInteger

概述

BigInteger类型可以处理比Integer类型大的数据

  • 该类支持任意精度的整数

构造方法

  • public BigInteger(String val):val是十进制字符串
//将十进制2转换为BigInteger类型
BigInteger bigInteger = new BigInteger("2");

常用方法

  • add(BigInteger val):加法
  • subtract(BigInteger val):减法
  • multiply(BigInteger val):乘法
  • divide(BigInteger val):除法
  • remainder(BigInteger val):取余
  • BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,数组第一个为商,第二为余数
  • pow(int exponent):取参数的exponent次方
  • negate():取相反数
  • shiftLeft(int n):左移n位,如果n位负数,则右移
  • shiftRight(int n):右移n位,如果n为负数,则左移
  • and(BigInteger val):与操作
  • or(BigInteger val):或操作
  • compareTo(BigInteger val):比较操作
  • equals(Object x):如果x是BigInteger并且数值相等,返回true
  • min(BigInteger val)
  • max(BigInteger val)
public class Test {
    public static void main(String[] args) {

        int num = 1;

        //创建BigInteger对象
        BigInteger bi = new BigInteger(num + "");

        //加法
        System.out.println(bi.add(new BigInteger("99")));

        //减法
        System.out.println(bi.subtract(new BigInteger("25")));

        //乘法
        System.out.println(bi.multiply(new BigInteger("3")));

        //除法
        System.out.println(bi.divide(new BigInteger("2")));

        //除以3的商
        System.out.println(bi.divideAndRemainder(new BigInteger("3"))[0]);
        // 除以3的余数
        System.out.println(bi.divideAndRemainder(new BigInteger("3"))[1]);

        //大数字的2次方
        System.out.println(bi.pow(2));

        //大数字的相反数
        System.out.println(bi.negate());
    }
}

BigDecimal

概述

BigDecimal加入了小数的概念

构造方法

  • public BigDecimal(double val)
  • public BigDecimal(String val)

常用方法

  • add(BigDecimal augend):加法
  • subtract(BigDecimal augend):减法
  • multiply(BigDecimal augend):乘法
  • divide(BigDecimal divisor, int scale, int roundingMode):除法,三个参数为:除数、商的小数点后的位数、近似处理模式

八种近似处理模式

  • ROUND_UP

    商的最后一位如果大于0,则向前进位,无论正负

    注意,此舍入模式始终不会减少计算值的大小

  • ROUND_DOWN

    商的最后一位无论是什么数字,都省略

    注意,此舍入模式始终不会增加计算值的大小

  • ROUND_CEILING

    商为正,则舍入行为与 ROUND_UP 相同

    商为负,则舍入行为与 ROUND_DOWN 相同

    注意,这两种模式的处理都会使近似值大于等于实际值

  • ROUND_FLOOR

    商为正,则舍入行为与 ROUND_DOWN 相同

    商为负,则舍入行为与 ROUND_UP 相同

    注意,这两种模式的处理都会使近似值小于等于实际值

  • ROUND_HALF_UP

    对商四舍五入

    如果商最后一位小于5,则舍弃

    如果大于等于5,进行进位操作,如7.5 ≈ 8

  • ROUND_HALF_DOWN

    对商四舍五入

    如果商最后一位小于等于5,则舍弃

    如果大于5,进行进位操作,如7.5 ≈ 7

  • ROUND_HALF_EVEN

    如果商的倒数第二位为奇数,则按照 ROUND_HALF_UP 处理

    如果商的倒数第二位为偶数,则按照 ROUND_HALF_DOWN 处理

    如 7.5 ≈ 8, 8.5 ≈ 8

    注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小

    此舍入模式也称为“银行家舍入法”,主要在美国使用

  • ROUND_UNNECESSARY:断言请求的操作具有精确的结果,因此不需要舍入

    如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException

发表评论

0/200
393 点赞
0 评论
收藏