Class MathContext
- java.lang.Object
-
- com.ibm.icu.math.MathContext
-
- All Implemented Interfaces:
Serializable
public final class MathContext extends Object implements Serializable
TheMathContextimmutable class encapsulates the settings understood by the operator methods of theBigDecimalclass (and potentially other classes). Operator methods are those that effect an operation on a number or a pair of numbers.The settings, which are not base-dependent, comprise:
digits: the number of digits (precision) to be used for an operationform: the form of any exponent that results from the operationlostDigits: whether checking for lost digits is enabledroundingMode: the algorithm to be used for rounding.
When provided, a
MathContextobject supplies the settings for an operation directly.When
MathContext.DEFAULTis provided for aMathContextparameter then the default settings are used (9, SCIENTIFIC, false, ROUND_HALF_UP).In the
BigDecimalclass, all methods which accept aMathContextobject defaults) also have a version of the method which does not accept a MathContext parameter. These versions carry out unlimited precision fixed point arithmetic (as though the settings were (0, PLAIN, false, ROUND_HALF_UP).The instance variables are shared with default access (so they are directly accessible to the
BigDecimalclass), but must never be changed.The rounding mode constants have the same names and values as the constants of the same name in
java.math.BigDecimal, to maintain compatibility with earlier versions ofBigDecimal.- Author:
- Mike Cowlishaw
- See Also:
BigDecimal, Serialized Form- Status:
- Stable ICU 2.0.
-
-
Field Summary
Fields Modifier and Type Field Description static MathContextDEFAULTAMathContextobject initialized to the default settings for general-purpose arithmetic.static intENGINEERINGStandard floating point notation (with engineering exponential format, where the power of ten is a multiple of 3).static intPLAINPlain (fixed point) notation, without any exponent.static intROUND_CEILINGRounding mode to round to a more positive number.static intROUND_DOWNRounding mode to round towards zero.static intROUND_FLOORRounding mode to round to a more negative number.static intROUND_HALF_DOWNRounding mode to round to nearest neighbor, where an equidistant value is rounded down.static intROUND_HALF_EVENRounding mode to round to nearest neighbor, where an equidistant value is rounded to the nearest even neighbor.static intROUND_HALF_UPRounding mode to round to nearest neighbor, where an equidistant value is rounded up.static intROUND_UNNECESSARYRounding mode to assert that no rounding is necessary.static intROUND_UPRounding mode to round away from zero.static intSCIENTIFICStandard floating point notation (with scientific exponential format, where there is one digit before any decimal point).
-
Constructor Summary
Constructors Constructor Description MathContext(int setdigits)Constructs a newMathContextwith a specified precision.MathContext(int setdigits, int setform)Constructs a newMathContextwith a specified precision and form.MathContext(int setdigits, int setform, boolean setlostdigits)Constructs a newMathContextwith a specified precision, form, and lostDigits setting.MathContext(int setdigits, int setform, boolean setlostdigits, int setroundingmode)Constructs a newMathContextwith a specified precision, form, lostDigits, and roundingMode setting.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetDigits()Returns the digits setting.intgetForm()Returns the form setting.booleangetLostDigits()Returns the lostDigits setting.intgetRoundingMode()Returns the roundingMode setting.StringtoString()Returns theMathContextas a readable string.
-
-
-
Field Detail
-
PLAIN
public static final int PLAIN
Plain (fixed point) notation, without any exponent. Used as a setting to control the form of the result of aBigDecimaloperation. A zero result in plain form may have a decimal part of one or more zeros.- See Also:
ENGINEERING,SCIENTIFIC, Constant Field Values- Status:
- Stable ICU 2.0.
-
SCIENTIFIC
public static final int SCIENTIFIC
Standard floating point notation (with scientific exponential format, where there is one digit before any decimal point). Used as a setting to control the form of the result of aBigDecimaloperation. A zero result in plain form may have a decimal part of one or more zeros.- See Also:
ENGINEERING,PLAIN, Constant Field Values- Status:
- Stable ICU 2.0.
-
ENGINEERING
public static final int ENGINEERING
Standard floating point notation (with engineering exponential format, where the power of ten is a multiple of 3). Used as a setting to control the form of the result of aBigDecimaloperation. A zero result in plain form may have a decimal part of one or more zeros.- See Also:
PLAIN,SCIENTIFIC, Constant Field Values- Status:
- Stable ICU 2.0.
-
ROUND_CEILING
public static final int ROUND_CEILING
Rounding mode to round to a more positive number. Used as a setting to control the rounding mode used during aBigDecimaloperation.If any of the discarded digits are non-zero then the result should be rounded towards the next more positive digit.
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_DOWN
public static final int ROUND_DOWN
Rounding mode to round towards zero. Used as a setting to control the rounding mode used during aBigDecimaloperation.All discarded digits are ignored (truncated). The result is neither incremented nor decremented.
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_FLOOR
public static final int ROUND_FLOOR
Rounding mode to round to a more negative number. Used as a setting to control the rounding mode used during aBigDecimaloperation.If any of the discarded digits are non-zero then the result should be rounded towards the next more negative digit.
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_HALF_DOWN
public static final int ROUND_HALF_DOWN
Rounding mode to round to nearest neighbor, where an equidistant value is rounded down. Used as a setting to control the rounding mode used during aBigDecimaloperation.If the discarded digits represent greater than half (0.5 times) the value of a one in the next position then the result should be rounded up (away from zero). Otherwise the discarded digits are ignored.
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_HALF_EVEN
public static final int ROUND_HALF_EVEN
Rounding mode to round to nearest neighbor, where an equidistant value is rounded to the nearest even neighbor. Used as a setting to control the rounding mode used during aBigDecimaloperation.If the discarded digits represent greater than half (0.5 times) the value of a one in the next position then the result should be rounded up (away from zero). If they represent less than half, then the result should be rounded down.
Otherwise (they represent exactly half) the result is rounded down if its rightmost digit is even, or rounded up if its rightmost digit is odd (to make an even digit).
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_HALF_UP
public static final int ROUND_HALF_UP
Rounding mode to round to nearest neighbor, where an equidistant value is rounded up. Used as a setting to control the rounding mode used during aBigDecimaloperation.If the discarded digits represent greater than or equal to half (0.5 times) the value of a one in the next position then the result should be rounded up (away from zero). Otherwise the discarded digits are ignored.
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_UNNECESSARY
public static final int ROUND_UNNECESSARY
Rounding mode to assert that no rounding is necessary. Used as a setting to control the rounding mode used during aBigDecimaloperation.Rounding (potential loss of information) is not permitted. If any of the discarded digits are non-zero then an
ArithmeticExceptionshould be thrown.- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
ROUND_UP
public static final int ROUND_UP
Rounding mode to round away from zero. Used as a setting to control the rounding mode used during aBigDecimaloperation.If any of the discarded digits are non-zero then the result will be rounded up (away from zero).
- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
DEFAULT
public static final MathContext DEFAULT
AMathContextobject initialized to the default settings for general-purpose arithmetic. That is,digits=9 form=SCIENTIFIC lostDigits=false roundingMode=ROUND_HALF_UP.- See Also:
SCIENTIFIC,ROUND_HALF_UP- Status:
- Stable ICU 2.0.
-
-
Constructor Detail
-
MathContext
public MathContext(int setdigits)
Constructs a newMathContextwith a specified precision. The other settings are set to the default values (seeDEFAULT). AnIllegalArgumentExceptionis thrown if thesetdigitsparameter is out of range (<0 or >999999999).- Parameters:
setdigits- Theintdigits setting for thisMathContext.- Throws:
IllegalArgumentException- parameter out of range.- Status:
- Stable ICU 2.0.
-
MathContext
public MathContext(int setdigits, int setform)Constructs a newMathContextwith a specified precision and form. The other settings are set to the default values (seeDEFAULT). AnIllegalArgumentExceptionis thrown if thesetdigitsparameter is out of range (<0 or >999999999), or if the value given for thesetformparameter is not one of the appropriate constants.- Parameters:
setdigits- Theintdigits setting for thisMathContext.setform- Theintform setting for thisMathContext.- Throws:
IllegalArgumentException- parameter out of range.- Status:
- Stable ICU 2.0.
-
MathContext
public MathContext(int setdigits, int setform, boolean setlostdigits)Constructs a newMathContextwith a specified precision, form, and lostDigits setting. The roundingMode setting is set to its default value (seeDEFAULT). AnIllegalArgumentExceptionis thrown if thesetdigitsparameter is out of range (<0 or >999999999), or if the value given for thesetformparameter is not one of the appropriate constants.- Parameters:
setdigits- Theintdigits setting for thisMathContext.setform- Theintform setting for thisMathContext.setlostdigits- ThebooleanlostDigits setting for thisMathContext.- Throws:
IllegalArgumentException- parameter out of range.- Status:
- Stable ICU 2.0.
-
MathContext
public MathContext(int setdigits, int setform, boolean setlostdigits, int setroundingmode)Constructs a newMathContextwith a specified precision, form, lostDigits, and roundingMode setting. AnIllegalArgumentExceptionis thrown if thesetdigitsparameter is out of range (<0 or >999999999), or if the value given for thesetformorsetroundingmodeparameters is not one of the appropriate constants.- Parameters:
setdigits- Theintdigits setting for thisMathContext.setform- Theintform setting for thisMathContext.setlostdigits- ThebooleanlostDigits setting for thisMathContext.setroundingmode- TheintroundingMode setting for thisMathContext.- Throws:
IllegalArgumentException- parameter out of range.- Status:
- Stable ICU 2.0.
-
-
Method Detail
-
getDigits
public int getDigits()
Returns the digits setting. This value is always non-negative.- Returns:
- an
intwhich is the value of the digits setting - Status:
- Stable ICU 2.0.
-
getForm
public int getForm()
- Returns:
- an
intwhich is the value of the form setting - Status:
- Stable ICU 2.0.
-
getLostDigits
public boolean getLostDigits()
Returns the lostDigits setting. This will be eithertrue(enabled) orfalse(disabled).- Returns:
- a
booleanwhich is the value of the lostDigits setting - Status:
- Stable ICU 2.0.
-
getRoundingMode
public int getRoundingMode()
Returns the roundingMode setting. This will be one ofROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_HALF_UP,ROUND_UNNECESSARY, orROUND_UP.- Returns:
- an
intwhich is the value of the roundingMode setting - Status:
- Stable ICU 2.0.
-
toString
public String toString()
Returns theMathContextas a readable string. TheStringreturned represents the settings of theMathContextobject as four blank-delimited words separated by a single blank and with no leading or trailing blanks, as follows:-
digits=, immediately followed by the value of the digits setting as a numeric word. -
form=, immediately followed by the value of the form setting as an uppercase word (one ofSCIENTIFIC,PLAIN, orENGINEERING). -
lostDigits=, immediately followed by the value of the lostDigits setting (1if enabled,0if disabled). -
roundingMode=, immediately followed by the value of the roundingMode setting as a word. This word will be the same as the name of the corresponding public constant.
For example:
digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UPAdditional words may be appended to the result of
toStringin the future if more properties are added to the class. -
-
-