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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。