java.math.MathContext类提供不可变对象,这些对象封装上下文设置并定义那些数字运算符规则,例如 BigDecimal 类实现的规则。
base-independent配置如下:
- 精确:运算所使用的位数;此准确度四舍五入为结果。
- RoundingMode:RoundingMode 对象,用于确定要使用的舍入算法。
The number of significant digits is specified by the precision. The default mode in rounding off is HALF_UP mode which will be introduced in later part.
示例:
假设选择了一个随机数 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(字符串值):此构造函数从字符串构造一个新的MathContext。
现在,详细介绍此类中存在的方法,稍后将在程序的实现部分中使用该方法。
Method |
Description |
---|---|
equals(Object x) | 此方法将此MathContext 与指定的对象进行比较以确定是否相等。 |
getPrecision() | 此方法返回精度设置。 |
getRoundingMode() | 此方法返回 roundingMode 设置。 |
hashCode() | 此方法返回此 MathContext 的哈希码。 |
toString() | 此方法返回此 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
相关用法
- Java java.math.BigDecimal.plus(MathContext mc)用法及代码示例
- Java java.math.BigDecimal.valueOf(double val)用法及代码示例
- Java java.math.BigDecimal.valueOf(long val)用法及代码示例
- Java java.math.BigDecimal.valueOf(long unscaledVal, int scale)用法及代码示例
- Java java.io.BufferedInputStream.mark()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotation()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.getDeclaredAnnotations()用法及代码示例
- Java java.lang.reflect.AccessibleObject.isAccessible()用法及代码示例
- Java java.lang.reflect.AccessibleObject.setAccessible()用法及代码示例
- Java java.lang.reflect.Array.get()用法及代码示例
- Java java.lang.reflect.Array.getBoolean()用法及代码示例
- Java java.lang.reflect.Array.getByte()用法及代码示例
- Java java.lang.reflect.Array.getChar()用法及代码示例
- Java java.lang.reflect.Array.getDouble()用法及代码示例
- Java java.lang.reflect.Array.getFloat()用法及代码示例
- Java java.lang.reflect.Array.getInt()用法及代码示例
- Java java.lang.reflect.Array.getLength()用法及代码示例
- Java java.lang.reflect.Array.getLong()用法及代码示例
- Java java.lang.reflect.Array.getShort()用法及代码示例
- Java java.lang.reflect.Array.newInstance()用法及代码示例
- Java java.lang.reflect.Array.set()用法及代码示例
- Java java.lang.reflect.Array.setBoolean()用法及代码示例
- Java java.lang.reflect.Array.setByte()用法及代码示例
- Java java.lang.reflect.Array.setChar()用法及代码示例
注:本文由纯净天空筛选整理自kapilnama1998大神的英文原创作品 java.math.MathContext Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。