📜  Java.math包教程(1)

📅  最后修改于: 2023-12-03 15:16:02.824000             🧑  作者: Mango

Java.math包教程

Java.math包是Java编程语言中的一个非常有用的包,在进行高精度计算时经常用到。本教程将介绍Java.math包的主要类和方法,涵盖以下主题:

  • BigDecimal类
  • BigInteger类
  • MathContext类
BigDecimal类

BigDecimal类可以用于执行精确的浮点运算。这个类对于财务系统等需要高精度计算的场景非常有用。下面是该类的主要方法及其说明:

BigDecimal 构造器
  • BigDecimal(String val):通过传入字符串来创建一个BigDecimal对象。
BigDecimal 常用方法
  • add(BigDecimal val):将此BigDecimal与val相加。
  • subtract(BigDecimal val):从此BigDecimal中减去val。
  • multiply(BigDecimal val):将此BigDecimal乘以val。
  • divide(BigDecimal val):将此BigDecimal除以val。
  • setScale(int newScale):将此BigDecimal的标度设置为newScale。
  • toString():将此BigDecimal转换为字符串。
// 创建一个BigDecimal对象
BigDecimal a = new BigDecimal("1234");
BigDecimal b = new BigDecimal("5678");

// 调用add方法相加两个BigDecimal对象
BigDecimal c = a.add(b);
System.out.println(c); // 输出6900

// 调用multiply方法乘以一个BigDecimal对象
BigDecimal d = a.multiply(b);
System.out.println(d); // 输出7006652

// 设置BigDecimal对象的精度
BigDecimal e = b.divide(a, 3, BigDecimal.ROUND_HALF_UP);
System.out.println(e); // 输出4.603
BigInteger类

BigInteger类可以用于进行高精度整数计算。下面是该类的主要方法及其说明:

BigInteger 构造器
  • BigInteger(String val):通过传入字符串来创建一个BigInteger对象。
BigInteger 常用方法
  • add(BigInteger val):将此BigInteger与val相加。
  • subtract(BigInteger val):从此BigInteger中减去val。
  • multiply(BigInteger val):将此BigInteger乘以val。
  • divide(BigInteger val):将此BigInteger除以val。
  • toString():将此BigInteger转换为字符串。
// 创建一个BigInteger对象
BigInteger a = new BigInteger("1234");
BigInteger b = new BigInteger("5678");

// 调用add方法相加两个BigInteger对象
BigInteger c = a.add(b);
System.out.println(c); // 输出6912

// 调用multiply方法乘以一个BigInteger对象
BigInteger d = a.multiply(b);
System.out.println(d); // 输出7006652

// 调用divide方法除以一个BigInteger对象
BigInteger e = b.divide(a);
System.out.println(e); // 输出4
MathContext类

MathContext类可以用于指定BigDecimal对象的精度及舍入模式。下面是该类的主要方法及其说明:

MathContext 构造器
  • MathContext(int precision):通过传入一个精度值来创建一个MathContext对象。
  • MathContext(int precision, int roundingMode):通过传入精度值和舍入模式来创建一个MathContext对象。
MathContext 常量
  • public static final MathContext UNLIMITED:表示没有限制的精度。
  • public static final MathContext DECIMAL32:表示使用IEEE 754R Decimal32格式的精度(7个数字)。
  • public static final MathContext DECIMAL64:表示使用IEEE 754R Decimal64格式的精度(16个数字)。
  • public static final MathContext DECIMAL128:表示使用IEEE 754R Decimal128格式的精度(34个数字)。
MathContext 方法
  • getPrecision():返回此MathContext的精度值。
  • getRoundingMode():返回此MathContext的舍入模式。
// 使用MathContext对象指定精度和舍入模式
MathContext mc = new MathContext(3, RoundingMode.HALF_UP);

BigDecimal a = new BigDecimal("1.2345", mc);
System.out.println(a); // 输出1.23
结语

Java.math包为Java程序员提供了一种便捷的高精度计算方式,能够满足许多复杂的计算需求。本教程介绍了Java.math包的主要类和方法,希望能够帮助到您。