📜  Java中的Java .math.MathContext 类

📅  最后修改于: 2022-05-13 01:54:56.167000             🧑  作者: Mango

Java中的Java .math.MathContext 类

Java.math.MathContext类提供了不可变对象,这些对象封装了上下文设置并定义了那些数值运算符规则,例如 BigDecimal 类实现的那些规则。

独立于基的配置如下:

  • 精度:用于操作的位数;该精度四舍五入为结果。
  • RoundingMode :一个 RoundingMode 对象,用于确定要使用的舍入算法。

插图:

假设一个随机数被选为 123,现在的任务是四舍五入 2 位有效数字,你将得到 120。如果你用科学记数法来思考,它可能会更明显。与科学记数法一样,123 将是 1.23e2。如果您只保留 2 个有效数字,那么您将得到 1.2e2 或 120。通过减少有效数字的数量,我们降低了指定数字的精度。

RoundingMode 部分指定我们应该如何处理精度损失。如果您使用 123 作为数字并要求 2 位有效数字,那么您已经降低了重复使用该示例的准确性。如果 RoundingMode 为 HALF_UP(默认模式),123 将变为 120。如果 RoundingMode 为 CEILING,您将得到 130。

语法:类声明

public final class MathContext extends Object  implements Serializable

构造函数:

  • MathContext(int setPrecision)此构造函数构造一个具有指定精度和 HALF_UP 舍入模式的新 MathContext。
  • MathContext(int setPrecision, RoundingMode setRoundingMode)此构造函数构造一个具有指定精度和舍入模式的新 MathContext。
  • MathContext(String val)此构造函数从字符串构造一个新的 MathContext。

现在,详细介绍这个类中存在的方法,稍后,将在程序的实现部分中使用相同的方法。

Method

Description

equals(Object x)This method compares this MathContext with the specified Object for equality.
getPrecision()This method returns the precision setting.
getRoundingMode()This method returns the roundingMode setting.
hashCode()This method returns the hash code for this MathContext.
toString()This method returns the string representation of this MathContext.

例子:

Java
// Java Program to illustrate java.math.Context class
  
// Importing all classes from
// java.math package
import java.math.*;
  
// Main class
class GFG {
  
    // Main driver method
    public static void main(String args[])
    {
  
        // Custom input number 'N' over which
        // class operation are performed
        // N = 246.8
  
        // erforming the rounding of operations
  
        // Rounding  off is carried out across
        // 4 digits
        // N = 246.8
        // It has 4 digits only so
        // the output is same as input
  
        // Case 1
        // Across all digits of the input N = 4
        System.out.println(new BigDecimal(
            "246.8",
            new MathContext(4, RoundingMode.HALF_UP)));
  
        // Case 2
        // Across 'N/2' of the input 'N'
        // Here, acrossings 2 digits as input N has 4 digits
  
        // Rounding HALF_UP
        System.out.println(new BigDecimal(
            "246.8",
            new MathContext(2, RoundingMode.HALF_UP)));
  
        // Rounding HALF_DOWN
        System.out.println(new BigDecimal(
            "246.8",
            new MathContext(2, RoundingMode.CEILING)));
  
        // Case 3
        // Across '1' digit of the input 'N'
        // Here, acrossings 2 digits of 4 digits of input N
  
        // Rounding HALF_UP
        System.out.println(new BigDecimal(
            "246.8",
            new MathContext(1, RoundingMode.HALF_UP)));
  
        // Rounding HALF_DOWN
        System.out.println(new BigDecimal(
            "246.8",
            new MathContext(1, RoundingMode.CEILING)));
    }
}


输出
246.8
2.5E+2
2.5E+2
2E+2
3E+2