public class BigDecimal extends Number implements Comparable<BigDecimal>
BigDecimal
由任意精度的整数和一个32位的整数规模不成比例的价值。如果零或正,规模是小数点右边的数字的位数。如果负的数量不成比例的值乘以十规模的否定的力量。由
BigDecimal
代表数的价值因此是
(unscaledValue × 10-scale)。由方法返回精确的运算结果用的是
BigDecimal
类的算术,尺度操纵,圆、比较、散列提供的操作,和格式转换。的toString()
方法提供的一个典型代表,一个BigDecimal
。
该类提供了BigDecimal
舍入行为的用户完全控制。如果没有指定舍入模式,无法表示准确结果,则抛出一个异常;否则,计算可以进行选择的精度和舍入模式的操作提供适当的MathContext
对象。在两种情况下,提供了八种四舍五入模式,以控制四舍五入。在这类使用整数字段(如ROUND_HALF_UP
)为代表的舍入模式已经过时;的RoundingMode
枚举
枚举值,(如RoundingMode.HALF_UP
)应该用来代替。
当一个MathContext
对象提供0的精度设置(例如,MathContext.UNLIMITED
),算术运算是准确的,因为是算术方法是不MathContext
对象。(这是唯一的行为,在之前的5版本支持)作为计算结果的舍入模式具有0的精度设置MathContext
对象设置不使用,因此无关。在分裂的情况下,确切的商可以有一个无限长的十进制扩展;例如,1除以3。如果商具有无穷的十进制扩展和操作指定返回准确的结果,一个ArithmeticException
抛出。否则,返回的确切结果,为其他操作所做的。
当精度设置不0,对BigDecimal
算法规则是广泛兼容的可选操作模式中定义的算法x3.274-1996和ANSI ANSI X3.274-1996/AM 1-2000(7.4节)。不像那些标准,BigDecimal
包括多种舍入模式,分别为司BigDecimal
强制性5之前的版本。这些ANSI标准和BigDecimal
规范之间的任何冲突都有利于BigDecimal
解决。
由于相同的数值可以有不同的表示(以不同的尺度),算术和四舍五入的规则必须指定的数值结果和规模使用的结果的表示。
在一般的四舍五入的模式和精度设置决定如何操作返回结果与有限数量的数字时,确切的结果有更多的数字(也许是无限多的情况下,分裂)比数字返回。首先,要返回的总位数的MathContext
的precision
设置指定的;这就决定了结果的精度。数字计数从准确结果的最左边的非零位。四舍五入的模式决定了任何丢弃的尾随数字会影响返回的结果。
对于所有的算术运算符,操作进行,虽然一个确切的中间结果首先计算,然后四舍五入指定的精度设置(如果必要)的数字,使用所选的四舍五入模式。如果不返回确切的结果,则丢弃了精确结果的一些数字位置。当四舍五入增加了返回的结果的大小,它是可能的一个新的数字位置被创建由一个进位传播到一个领先的“9”数字。例如,舍入值999.9到三个数字舍入将数值等于一千,表示为100×10一。在这种情况下,新的“1”是返回的结果的领先的数字位置。
除了一个逻辑精确的结果,每个算术操作有一个优选的规模为代表的结果。每个操作的首选规模列在下面的表格中。
Operation | Preferred Scale of Result |
---|---|
Add | max(addend.scale(), augend.scale()) |
Subtract | max(minuend.scale(), subtrahend.scale()) |
Multiply | multiplier.scale() + multiplicand.scale() |
Divide | dividend.scale() - divisor.scale() |
1/32
是
0.03125
。
在四舍五入之前,逻辑精确中间结果的规模是该操作的首选标度。如果精确的数值结果不能在precision
位数表示,舍入选择要返回的一组数字和结果的尺度是从中间结果的尺度降低到最小规模为代表的precision
数字真的回来了。如果准确的结果可以以最precision
位数,与接近首选规模结果表示返回。特别是,一个精确的表示商可能少于precision
位数去除尾随零和减少规模为代表。例如,使用floor取整舍入模式为三位数,
19/100 = 0.19 // integer=19, scale=2
but
21/110 = 0.190 // integer=190, scale=3
请注意,对于添加、减去和乘,规模的减少将等于被丢弃的确切结果的数字位置的数量。如果四舍五入导致进位传播,以创建一个新的高阶数位位置,则当创建一个新的数位位置时,会被丢弃的结果的一个额外的数位被丢弃。
其他方法可能有稍微不同的四舍五入语义。例如,使用specified algorithm的pow
方法的结果有时不同于圆的数学结果,最后超过一个单位,一个小。
两类运算提供了操纵的BigDecimal
规模:缩放/舍入运算和小数点移动操作。缩放/舍入操作(setScale
和round
)返回一个BigDecimal
其值大约是(或完全)等于该数,但其规模和精度是指定的值;即他们增加或存储数的精度对其价值的影响最小的减少。小数点移动操作(movePointLeft
和movePointRight
)返回一个BigDecimal
移动小数点在指定的方向指定的距离从数了。
为了清晰、明了,伪代码是在BigDecimal
描述的使用方法。伪代码表达(i + j)
是“BigDecimal
其价值的BigDecimal
i
添加到的BigDecimal
j
速记。“伪码表达(i == j)
是“true
若BigDecimal
i
表示相同的值作为BigDecimal
j
速记。”类似地解释其他伪代码表达式。方括号来表示特定的BigInteger
和规模对定义BigDecimal
值;例如,[ 19,2 ]是BigDecimal
在数值上等于0.19,规模2。
注:应注意如果BigDecimal
对象是作为自BigDecimal
的自然排序是不致在SortedSet
一SortedMap
或元素的键。看到Comparable
,SortedMap
或SortedSet
更多信息。
这个类的所有方法和构造函数抛出NullPointerException
时通过的任何输入参数null
对象引用。
Modifier and Type | Field and Description |
---|---|
static BigDecimal |
ONE
值为1,规模为0。
|
static int |
ROUND_CEILING
圆向正无穷大的圆整圆。
|
static int |
ROUND_DOWN
圆对零的圆整。
|
static int |
ROUND_FLOOR
圆对负无穷大的四舍五入模式。
|
static int |
ROUND_HALF_DOWN
舍入到“近邻”除非两边距离相等,在这种情况下,本轮下跌。
|
static int |
ROUND_HALF_EVEN
舍入到“近邻”除非两边距离相等,在这种情况下,对连邻居轮。
|
static int |
ROUND_HALF_UP
舍入到“近邻”除非两边距离相等,在这种情况下,圆了。
|
static int |
ROUND_UNNECESSARY
四舍五入模式断言,所请求的操作有一个确切的结果,因此没有四舍五入是必要的。
|
static int |
ROUND_UP
圆距离为零的四舍五入模式。
|
static BigDecimal |
TEN
值为10,规模为0。
|
static BigDecimal |
ZERO
值为0,规模为0。
|
Constructor and Description |
---|
BigDecimal(BigInteger val)
翻译成
BigDecimal
BigInteger 。
|
BigDecimal(BigInteger unscaledVal, int scale)
翻译
BigInteger 不成比例的价值和
int 规模为
BigDecimal 。
|
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
翻译
BigInteger 不成比例的价值和
int 规模为
BigDecimal ,舍入根据语境的设置。
|
BigDecimal(BigInteger val, MathContext mc)
翻译
BigInteger 成
BigDecimal 舍入根据语境设置。
|
BigDecimal(char[] in)
|
BigDecimal(char[] in, int offset, int len)
|
BigDecimal(char[] in, int offset, int len, MathContext mc)
|
BigDecimal(char[] in, MathContext mc)
|
BigDecimal(double val)
翻译成
BigDecimal
double 的
double 二进制浮点值的小数表示。
|
BigDecimal(double val, MathContext mc)
翻译
double 成
BigDecimal ,舍入根据语境的设置。
|
BigDecimal(int val)
翻译成
BigDecimal
int 。
|
BigDecimal(int val, MathContext mc)
翻译
int 成
BigDecimal ,舍入根据语境的设置。
|
BigDecimal(long val)
翻译成
BigDecimal
long 。
|
BigDecimal(long val, MathContext mc)
翻译
long 成
BigDecimal ,舍入根据语境的设置。
|
BigDecimal(String val)
将一个字符串表示一个
BigDecimal
BigDecimal 。
|
BigDecimal(String val, MathContext mc)
|
Modifier and Type | Method and Description |
---|---|
BigDecimal |
abs()
返回一个
BigDecimal 其价值是本
BigDecimal 的绝对值,其规模
this.scale() 。
|
BigDecimal |
abs(MathContext mc)
返回一个
BigDecimal 其价值是本
BigDecimal 绝对值舍入根据语境设置。
|
BigDecimal |
add(BigDecimal augend)
返回的值是
BigDecimal
(this + augend) ,其规模
max(this.scale(), augend.scale()) 。
|
BigDecimal |
add(BigDecimal augend, MathContext mc)
返回的值是
BigDecimal
(this + augend) ,舍入根据语境的设置。
|
byte |
byteValueExact()
将这一
byte
BigDecimal ,检查丢失的信息。
|
int |
compareTo(BigDecimal val)
这
BigDecimal 与指定的
BigDecimal 比较。
|
BigDecimal |
divide(BigDecimal divisor)
返回的值是
BigDecimal
(this / divisor) ,和其首选的规模
(this.scale() - divisor.scale()) ;如果准确的商不能代表(因为它有一个十进制小数点扩展)的
ArithmeticException 抛出。
|
BigDecimal |
divide(BigDecimal divisor, int roundingMode)
返回的值是
BigDecimal
(this / divisor) ,其规模
this.scale() 。
|
BigDecimal |
divide(BigDecimal divisor, int scale, int roundingMode)
返回的值是
BigDecimal
(this / divisor) ,其规模为指定的。
|
BigDecimal |
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回的值是
BigDecimal
(this / divisor) ,其规模为指定的。
|
BigDecimal |
divide(BigDecimal divisor, MathContext mc)
返回的值是
BigDecimal
(this / divisor) ,舍入根据语境的设置。
|
BigDecimal |
divide(BigDecimal divisor, RoundingMode roundingMode)
返回的值是
BigDecimal
(this / divisor) ,其规模
this.scale() 。
|
BigDecimal[] |
divideAndRemainder(BigDecimal divisor)
返回一二元
BigDecimal 数组包含的结果
divideToIntegralValue 随后的结果
remainder 在两个操作数。
|
BigDecimal[] |
divideAndRemainder(BigDecimal divisor, MathContext mc)
返回一二元
BigDecimal 数组包含的结果
divideToIntegralValue 随后对两个操作数舍入根据上下文设置
remainder 计算结果。
|
BigDecimal |
divideToIntegralValue(BigDecimal divisor)
返回的值是
BigDecimal 商
(this / divisor) 整数部分向下舍入。
|
BigDecimal |
divideToIntegralValue(BigDecimal divisor, MathContext mc)
返回的值是
BigDecimal
(this / divisor) 整数部分。
|
double |
doubleValue()
将这一
double
BigDecimal 。
|
boolean |
equals(Object x)
这
BigDecimal 与平等的规定
Object 比较。
|
float |
floatValue()
将这一
float
BigDecimal 。
|
int |
hashCode()
返回此
BigDecimal 哈希代码。
|
int |
intValue()
将这一
int
BigDecimal 。
|
int |
intValueExact()
将这一
int
BigDecimal ,检查丢失的信息。
|
long |
longValue()
将这一
long
BigDecimal 。
|
long |
longValueExact()
将这一
long
BigDecimal ,检查丢失的信息。
|
BigDecimal |
max(BigDecimal val)
返回该
BigDecimal 和
val 最大。
|
BigDecimal |
min(BigDecimal val)
返回该
BigDecimal 和
val 最小。
|
BigDecimal |
movePointLeft(int n)
返回一个
BigDecimal 相当于一个与小数点移动
n 地方留下。
|
BigDecimal |
movePointRight(int n)
返回一个
BigDecimal 相当于这一
n 小数点移动到正确的地方。
|
BigDecimal |
multiply(BigDecimal multiplicand)
返回的值是
BigDecimal
(this × multiplicand),其规模
(this.scale() + multiplicand.scale()) 。
|
BigDecimal |
multiply(BigDecimal multiplicand, MathContext mc)
返回的值是
BigDecimal
(this × multiplicand),舍入根据语境的设置。
|
BigDecimal |
negate()
返回的值是
BigDecimal
(-this) ,其规模
this.scale() 。
|
BigDecimal |
negate(MathContext mc)
返回的值是
BigDecimal
(-this) ,舍入根据语境的设置。
|
BigDecimal |
plus()
返回的值是
BigDecimal
(+this) ,其规模
this.scale() 。
|
BigDecimal |
plus(MathContext mc)
返回的值是
BigDecimal
(+this) ,舍入根据语境的设置。
|
BigDecimal |
pow(int n)
返回的值是
BigDecimal
(thisn),权力是精确计算,无限精度。
|
BigDecimal |
pow(int n, MathContext mc)
返回的值是
(thisn)
BigDecimal 。
|
int |
precision()
返回该
BigDecimal 的精度。
|
BigDecimal |
remainder(BigDecimal divisor)
返回的值是
(this % divisor)
BigDecimal 。
|
BigDecimal |
remainder(BigDecimal divisor, MathContext mc)
返回的值是
BigDecimal
(this % divisor) ,舍入根据语境的设置。
|
BigDecimal |
round(MathContext mc)
返回一个
BigDecimal 圆形根据
MathContext 设置。
|
int |
scale()
返回该
BigDecimal 的规模。
|
BigDecimal |
scaleByPowerOfTen(int n)
返回来的值等于(
this ×10
n)。
|
BigDecimal |
setScale(int newScale)
返回一个
BigDecimal 其规模是指定的值,其值是数值等于该
BigDecimal 的。
|
BigDecimal |
setScale(int newScale, int roundingMode)
返回一个
BigDecimal 其规模是规定值,且不成比例的价值乘以或除以
BigDecimal 的缩放值十的合适的电源来维持其整体价值的确定。
|
BigDecimal |
setScale(int newScale, RoundingMode roundingMode)
返回一个
BigDecimal 其规模是规定值,且不成比例的价值乘以或除以
BigDecimal 的缩放值十的合适的电源来维持其整体价值的确定。
|
short |
shortValueExact()
将这一
short
BigDecimal ,检查丢失的信息。
|
int |
signum()
返回该
BigDecimal signum函数。
|
BigDecimal |
stripTrailingZeros()
返回一个
BigDecimal ,数值上等于这一但任何尾随零从表示删除。
|
BigDecimal |
subtract(BigDecimal subtrahend)
返回的值是
BigDecimal
(this - subtrahend) ,其规模
max(this.scale(), subtrahend.scale()) 。
|
BigDecimal |
subtract(BigDecimal subtrahend, MathContext mc)
返回的值是
BigDecimal
(this - subtrahend) ,舍入根据语境的设置。
|
BigInteger |
toBigInteger()
将这一
BigInteger
BigDecimal 。
|
BigInteger |
toBigIntegerExact()
将这一
BigInteger
BigDecimal ,检查丢失的信息。
|
String |
toEngineeringString()
这
BigDecimal 返回字符串表示,如果指数是需要使用工程符号。
|
String |
toPlainString()
返回一个没有指数域这
BigDecimal 字符串表示形式。
|
String |
toString()
返回该
BigDecimal 字符串表示,如果指数是需要使用科学记数法。
|
BigDecimal |
ulp()
返回一个小的尺寸,最后一个单元,这
BigDecimal 。
|
BigInteger |
unscaledValue()
返回一个
BigInteger 其价值是本
BigDecimal 的不成比例的价值。
|
static BigDecimal |
valueOf(double val)
|
static BigDecimal |
valueOf(long val)
翻译
long 值变成零规模
BigDecimal 。
|
static BigDecimal |
valueOf(long unscaledVal, int scale)
翻译
long 不成比例的价值和
int 规模为
BigDecimal 。
|
byteValue, shortValue
public static final BigDecimal ZERO
public static final BigDecimal ONE
public static final BigDecimal TEN
public static final int ROUND_UP
public static final int ROUND_DOWN
public static final int ROUND_CEILING
BigDecimal
阳性,表现为
ROUND_UP
;如果为负,表现为
ROUND_DOWN
。请注意,此四舍五入模式从未降低计算出的值。
public static final int ROUND_FLOOR
BigDecimal
阳性,表现为
ROUND_DOWN
;如果为负,表现为
ROUND_UP
。请注意,此四舍五入模式不会增加计算出的值。
public static final int ROUND_HALF_UP
ROUND_UP
如果丢弃的分数≥0.5;否则,表现为
ROUND_DOWN
。请注意,这是我们大多数人都在小学教的四舍五入的模式。
public static final int ROUND_HALF_DOWN
ROUND_UP
如果丢弃率>0.5;否则,表现为
ROUND_DOWN
。
public static final int ROUND_HALF_EVEN
ROUND_HALF_UP
如果数字的废弃部分左边是奇数;表现为
ROUND_HALF_DOWN
如果它甚至。请注意,这是四舍五入模式,最大限度地减少累积误差时,反复应用在一个序列的计算。
public static final int ROUND_UNNECESSARY
ArithmeticException
抛出。
public BigDecimal(char[] in, int offset, int len)
BigDecimal
字符数组表示为
BigDecimal
,接受相同的字符序列的
BigDecimal(String)
构造函数,同时允许子阵列中被指定。
注意,如果该字符序列已经可以在字符数组,使用此构造函数比转换char
数组,字符串和使用BigDecimal(String)
构造函数更快。
in
-
char
阵列,字源。
offset
-第一个字符数组中的检查。
len
-字符数的考虑。
NumberFormatException
-如果
in
不是一个
BigDecimal
或定义的子阵的有效表示并不完全是在
in
。
public BigDecimal(char[] in, int offset, int len, MathContext mc)
BigDecimal
字符数组表示为
BigDecimal
,接受相同的字符序列的
BigDecimal(String)
构造函数,同时允许子阵被指定和舍入根据语境的设置。
注意,如果该字符序列已经可以在字符数组,使用此构造函数比转换char
数组,字符串和使用BigDecimal(String)
构造函数更快。
in
-这是字源
char
阵列。
offset
-第一个字符数组中的检查。
len
-字符数考虑..
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
NumberFormatException
-如果
in
不是一个
BigDecimal
或定义的子阵的有效表示并不完全是在
in
。
public BigDecimal(char[] in)
BigDecimal
字符数组表示为
BigDecimal
,接受相同的字符序列的
BigDecimal(String)
构造函数。
注意,如果该字符序列已经可以作为一个字符数组,使用此构造函数比转换char
数组,字符串和使用BigDecimal(String)
构造函数更快。
in
-这是字源
char
阵列。
NumberFormatException
-如果
in
不是一个
BigDecimal
合法表示。
public BigDecimal(char[] in, MathContext mc)
BigDecimal
字符数组表示为
BigDecimal
,接受相同的字符序列的
BigDecimal(String)
构造函数和舍入根据语境的设置。
注意,如果该字符序列已经可以作为一个字符数组,使用此构造函数比转换char
数组,字符串和使用BigDecimal(String)
构造函数更快。
in
-这是字源
char
阵列。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
NumberFormatException
-如果
in
不是一个
BigDecimal
合法表示。
public BigDecimal(String val)
BigDecimal
BigDecimal
。字符串包含一个可选的标志,
'+'
(
'\u002B')或
'-'
(
'\u002D'),然后由一个序列的零个或多个十进制数字(“整数”),后跟一个分数,后跟一个指数。
该分数由一个小数点后面的零或更多的十进制数字组成。该字符串必须包含至少一个整数或小数部分的一个数字。由符号形成的数,整数和分数被称为有效数。
该指数包含的字符'e'
('\u0065')或'E'
('\u0045')由一个或多个小数位数。指数的值必须介于- Integer.MAX_VALUE
(Integer.MIN_VALUE
+ 1)和Integer.MAX_VALUE
,包容。
更为正式的是,这个构造函数接受的字符串是由下面的语法描述的:
- BigDecimalString:
- Signopt Significand Exponentopt
- Sign:
+
-
- Significand:
- IntegerPart
.
FractionPartopt.
FractionPart- IntegerPart
- IntegerPart:
- Digits
- FractionPart:
- Digits
- Exponent:
- ExponentIndicator SignedInteger
- ExponentIndicator:
e
E
- SignedInteger:
- Signopt Digits
- Digits:
- Digit
- Digits Digit
- Digit:
- any character for which
Character.isDigit(char)
returnstrue
, including 0, 1, 2 ...
返回的BigDecimal
规模将小数位数,或零如果字符串不包含小数点,受任何指数的调整;如果字符串包含一个指数,该指数是从规模减去。由此产生的量值必须在Integer.MIN_VALUE
和Integer.MAX_VALUE
之间,包容。
数字映射的特征是由Character.digit(char, int)
集转换为基数10提供。字符串不能包含任何多余的字符(空格,例如)。
实例:
BigDecimal
的返回值等于有效数×10 指数。每个字符串的左边,最终表示[ BigInteger
,scale
]是显示在右边。
“0”[ 0 ]“0”[ 2 ]“123”[ 123,0 ]“123”[ 123,0 ]“1.23e3”[ 123,1 ]“1.23e + 3”[ 123,1 ]“12.3e + 7”[ 123,6 ]“12”[ 120,1 ]“12.3”[ 123,1 ]“0.00123”[ 123,5 ]“1.23e-12”[ 123,14 ]“1234.5e-4”[ 12345,5 ]“0E + 7”[ 0,7 ]“0”[ 0 ]
注:除float
和double
南和±无穷大值,此构造函数与价值兼容的Float.toString(float)
和Double.toString(double)
返回。这通常是将一个float
或double
为BigDecimal的首选方法,因为它不受到不可预测的BigDecimal(double)
构造函数。
val
-
BigDecimal
字符串表示形式。
NumberFormatException
-如果
val
不是一个
BigDecimal
合法表示。
public BigDecimal(String val, MathContext mc)
val
-一个
BigDecimal
字符串表示形式。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
NumberFormatException
val
BigDecimal的有效表达。
public BigDecimal(double val)
BigDecimal
double
的
double
二进制浮点值的小数表示。返回的
BigDecimal
规模最小的值是一个整数,
(10scale × val)。
笔记:
new BigDecimal(0.1)
在java创建一个BigDecimal
正好等于0.1(有1个刻度的1,一个不成比例的价值),但它实际上是等于0.1000000000000000055511151231257827021181583404541015625。这是因为0.1不能精确表示为一个double
(或者,对于这个问题,作为任何有限长度的二进制分数)。因此,这是通过在里面构造函数的值不等于0.1,但显然。String
构造函数,另一方面,是完全可以预测的:写作new BigDecimal("0.1")
创建一个BigDecimal
是确切地等于0.1,一个希望。因此,一般建议String constructor优先使用这一。double
必须作为一个BigDecimal
源,注意这个构造函数提供一个精确的转换;它不会得到相同的结果,将double
到String
使用Double.toString(double)
方法然后用BigDecimal(String)
构造函数。得到的结果,使用static
valueOf(double)
方法。val
-
double
值被转换为
BigDecimal
。
NumberFormatException
-如果
val
无限或南。
public BigDecimal(double val, MathContext mc)
double
成
BigDecimal
,舍入根据语境的设置。该
BigDecimal
规模最小的值是一个整数,
(10scale × val)。
这个构造函数的结果有一定的不可预知性,一般不建议使用;看到BigDecimal(double)
构造函数笔记下。
val
-
double
值被转换为
BigDecimal
。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但roundingmode是不必要的。
NumberFormatException
-如果
val
无限或南。
public BigDecimal(BigInteger val)
BigInteger
成
BigDecimal
。的
BigDecimal
规模为零。
val
-
BigInteger
值被转换为
BigDecimal
。
public BigDecimal(BigInteger val, MathContext mc)
BigInteger
成
BigDecimal
舍入根据语境设置。该
BigDecimal
规模为零。
val
-
BigInteger
值被转换为
BigDecimal
。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal(BigInteger unscaledVal, int scale)
BigInteger
不成比例的价值和
int
规模为
BigDecimal
。该
BigDecimal
值
(unscaledVal × 10-scale)。
unscaledVal
的
BigDecimal
不成比例的价值。
scale
的
BigDecimal
规模。
public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
BigInteger
不成比例的价值和
int
规模为
BigDecimal
,舍入根据语境的设置。该
BigDecimal
值
(unscaledVal × 10-scale),圆形按
precision
和舍入模式设置。
unscaledVal
的
BigDecimal
不成比例的价值。
scale
的
BigDecimal
规模。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal(int val)
BigDecimal
int
。该
BigDecimal
规模为零。
val
-
int
值被转换为
BigDecimal
。
public BigDecimal(int val, MathContext mc)
int
成
BigDecimal
,舍入根据语境的设置。该
BigDecimal
规模,之前的任何舍入为零。
val
-
int
值被转换为
BigDecimal
。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal(long val)
BigDecimal
long
。该
BigDecimal
规模为零。
val
-
long
值被转换为
BigDecimal
。
public BigDecimal(long val, MathContext mc)
long
成
BigDecimal
,舍入根据语境的设置。该
BigDecimal
规模,之前的任何舍入为零。
val
-
long
值被转换为
BigDecimal
。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public static BigDecimal valueOf(long unscaledVal, int scale)
long
不成比例的价值和
int
规模为
BigDecimal
。这种“静态工厂方法”是优先设置(
long
,
int
)构造函数,因为它允许重用常用的
BigDecimal
值..
unscaledVal
的
BigDecimal
不成比例的价值。
scale
的
BigDecimal
规模。
BigDecimal
其价值是
(unscaledVal × 10-scale)。
public static BigDecimal valueOf(long val)
long
值变成零规模
BigDecimal
。这种“静态工厂方法”是优先设置(
long
)构造函数,因为它允许重用常用的
BigDecimal
值。
val
的
BigDecimal
价值。
BigDecimal
其价值是
val
。
public static BigDecimal valueOf(double val)
double
成
BigDecimal
,使用
double
正则字符串表示的
Double.toString(double)
方法提供。
注:这通常是将一个double
的首选方式(或float
)为BigDecimal
,作为返回值等于从使用Double.toString(double)
结果构建BigDecimal
造成。
val
-
double
转换为
BigDecimal
。
BigDecimal
其值等于或约等于
val
价值。
NumberFormatException
-如果
val
无限或南。
public BigDecimal add(BigDecimal augend)
BigDecimal
(this + augend)
,其规模
max(this.scale(), augend.scale())
。
augend
值被添加到这个
BigDecimal
。
this + augend
public BigDecimal add(BigDecimal augend, MathContext mc)
BigDecimal
(this + augend)
,舍入根据语境的设置。如果任一个数为零,精度设置为非零,那么其他号码,如果必要的话,使用作为结果。
augend
值被添加到这个
BigDecimal
。
mc
的情况下使用。
this + augend
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal subtract(BigDecimal subtrahend)
BigDecimal
(this - subtrahend)
,其规模
max(this.scale(), subtrahend.scale())
。
subtrahend
值可从这
BigDecimal
减去。
this - subtrahend
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
BigDecimal
(this - subtrahend)
,舍入根据语境的设置。如果是零,那么这个圆
subtrahend
,如果必要的话,作为结果。如果这是零,那么结果是
subtrahend.negate(mc)
。
subtrahend
值可从这
BigDecimal
减去。
mc
的情况下使用。
this - subtrahend
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal multiply(BigDecimal multiplicand)
BigDecimal
(this × multiplicand),其规模
(this.scale() + multiplicand.scale())
。
multiplicand
值被乘以这个
BigDecimal
。
this * multiplicand
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
BigDecimal
(this × multiplicand),舍入根据语境的设置。
multiplicand
值被乘以这个
BigDecimal
。
mc
的情况下使用。
this * multiplicand
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
BigDecimal
(this / divisor)
,其规模为指定的。如果必须执行以指定的规模生成结果,则应用指定的四舍五入模式。
新divide(BigDecimal, int, RoundingMode)
方法应该优先使用这种传统的方法。
divisor
值,这
BigDecimal
是分。
scale
的
BigDecimal
商规模要返回。
roundingMode
-舍入模式适用。
this / divisor
ArithmeticException
-如果
divisor
是零,
roundingMode==ROUND_UNNECESSARY
和指定的规模不足表示相除的结果准确。
IllegalArgumentException
-如果
roundingMode
没有表示一个有效的舍入模式。
ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
BigDecimal
(this / divisor)
,其规模为指定的。如果必须执行以指定的规模生成结果,则应用指定的四舍五入模式。
divisor
值,这
BigDecimal
是分。
scale
的
BigDecimal
商规模要返回。
roundingMode
-舍入模式适用。
this / divisor
ArithmeticException
-如果
divisor
是零,
roundingMode==RoundingMode.UNNECESSARY
和指定的规模不足表示相除的结果准确。
public BigDecimal divide(BigDecimal divisor, int roundingMode)
BigDecimal
(this / divisor)
,其规模
this.scale()
。如果必须进行四舍五入,以给定的尺度产生一个结果,指定的四舍五入模式应用。
新divide(BigDecimal, RoundingMode)
方法应该优先使用这种传统的方法。
divisor
值,这
BigDecimal
是分。
roundingMode
-舍入模式适用。
this / divisor
ArithmeticException
-如果
divisor==0
,或
roundingMode==ROUND_UNNECESSARY
和
this.scale()
不足表示相除的结果准确。
IllegalArgumentException
-如果
roundingMode
没有表示一个有效的舍入模式。
ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
BigDecimal
(this / divisor)
,其规模
this.scale()
。如果必须进行四舍五入,以给定的尺度产生一个结果,指定的四舍五入模式应用。
divisor
值,这
BigDecimal
是分。
roundingMode
-舍入模式适用。
this / divisor
ArithmeticException
-如果
divisor==0
,或
roundingMode==RoundingMode.UNNECESSARY
和
this.scale()
不足表示相除的结果准确。
public BigDecimal divide(BigDecimal divisor)
BigDecimal
(this / divisor)
,和其首选的规模
(this.scale() - divisor.scale())
;如果准确的商不能代表(因为它有一个十进制小数点扩展)的
ArithmeticException
抛出。
divisor
值,这
BigDecimal
是分。
this / divisor
ArithmeticException
如果准确的商没有终止的十进制扩展
public BigDecimal divide(BigDecimal divisor, MathContext mc)
BigDecimal
(this / divisor)
,舍入根据语境的设置。
divisor
值,这
BigDecimal
是分。
mc
的情况下使用。
this / divisor
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
或
mc.precision == 0
和商有一个十进制小数点扩张。
public BigDecimal divideToIntegralValue(BigDecimal divisor)
BigDecimal
商
(this / divisor)
整数部分向下舍入。结果优选的规模
(this.scale() - divisor.scale())
。
divisor
值,这
BigDecimal
是分。
this / divisor
的整数部分。
divisor==0
ArithmeticException
public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
BigDecimal
(this / divisor)
整数部分。由于确切的商的整数部分不依赖于四舍五入模式,四舍五入模式不影响由该方法返回的值。结果优选的规模
(this.scale() - divisor.scale())
。一个
ArithmeticException
如果准确的商的整数部分的需求超过
mc.precision
数字扔。
divisor
值,这
BigDecimal
是分。
mc
的情况下使用。
this / divisor
的整数部分。
divisor==0
ArithmeticException
ArithmeticException
-如果
mc.precision
> 0,结果需要一个以上的精度
mc.precision
位数。
public BigDecimal remainder(BigDecimal divisor)
(this % divisor)
BigDecimal
。
其余的是由this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))
。请注意,这不是取模运算(结果可能是负面的)。
divisor
值,这
BigDecimal
是分。
this % divisor
。
divisor==0
ArithmeticException
public BigDecimal remainder(BigDecimal divisor, MathContext mc)
BigDecimal
(this % divisor)
,舍入根据语境的设置。的
MathContext
设置影响隐将用来计算余数。其余的计算本身的定义是精确的。因此,剩余的部分可能包含多
mc.getPrecision()
位数。
其余的是由this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor))
。请注意,这不是取模运算(结果可能是负面的)。
divisor
值,这
BigDecimal
是分。
mc
的情况下使用。
this % divisor
,圆形是必要的。
divisor==0
ArithmeticException
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
,或
mc.precision
> 0,
this.divideToIntgralValue(divisor)
结果需要一个以上的精度
mc.precision
位数。
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
public BigDecimal[] divideAndRemainder(BigDecimal divisor)
BigDecimal
数组包含的结果
divideToIntegralValue
随后对两个操作数
remainder
结果。
注意,如果两个整数的商和余数是必要的,这种方法比使用divideToIntegralValue
和remainder
方法分别因为师只需要进行一次。
divisor
值,这
BigDecimal
是可分的,而其余的计算。
BigDecimal
阵列:商(的
divideToIntegralValue
结果)是最初的元素,其余的是最后一个元素。
divisor==0
ArithmeticException
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
,
remainder(java.math.BigDecimal, java.math.MathContext)
public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
BigDecimal
数组包含的结果
divideToIntegralValue
随后对两个操作数舍入根据上下文设置
remainder
计算结果。
注意,如果两个整数的商和余数是必要的,这种方法比使用divideToIntegralValue
和remainder
方法分别因为师只需要进行一次。
divisor
值,这
BigDecimal
是可分的,而其余的计算。
mc
的情况下使用。
BigDecimal
阵列:商(的
divideToIntegralValue
结果)是最初的元素,其余的是最后一个元素。
divisor==0
ArithmeticException
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
,或
mc.precision
> 0,
this.divideToIntgralValue(divisor)
结果需要一个以上的精度
mc.precision
位数。
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
,
remainder(java.math.BigDecimal, java.math.MathContext)
public BigDecimal pow(int n)
BigDecimal
(thisn),权力是精确计算,无限精度。
参数n
必须在范围0到999999999,包括。ZERO.pow(0)
返回ONE
。请注意,未来的版本可能会扩大该方法的允许指数范围。
n
功率提高到这
BigDecimal
。
ArithmeticException
-如果
n
超出范围。
public BigDecimal pow(int n, MathContext mc)
BigDecimal
。目前的实现使用ANSI标准定义的x3.274-1996舍入根据上下文设置的核心算法。在一般情况下,返回的值是在所选择的精度进行精确数值的两。请注意,未来的版本可能会使用不同的算法,减少了允许误差界和增加了允许的指数范围。
的x3.274-1996算法:
ArithmeticException
abs(n) > 999999999
mc.precision == 0
和n < 0
mc.precision > 0
和n
已超过mc.precision
小数位数n
是零,即使是ONE
this
回零,否则
n
是积极的,其结果是通过重复平方计算技术在单累加器。个人与蓄电池乘法使用相同的数学背景设置在mc
除了精度提高到mc.precision + elength + 1
哪里elength
是n
小数位数。n
是负的,结果计算,如果n
阳性;这个值再分成一个使用上面指定的工作精度。n
功率提高到这
BigDecimal
。
mc
的情况下使用。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
,或
n
超出范围。
public BigDecimal abs()
BigDecimal
其价值是本
BigDecimal
的绝对值,其规模
this.scale()
。
abs(this)
public BigDecimal abs(MathContext mc)
BigDecimal
其价值是本
BigDecimal
绝对值舍入根据语境设置。
mc
的情况下使用。
abs(this)
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal negate()
BigDecimal
(-this)
,其规模
this.scale()
。
-this
。
public BigDecimal negate(MathContext mc)
BigDecimal
(-this)
,舍入根据语境的设置。
mc
的情况下使用。
-this
,圆形是必要的。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
public BigDecimal plus()
this
。
negate()
public BigDecimal plus(MathContext mc)
mc
的情况下使用。
this
,圆形是必要的。一零的结果将有一个规模为0。
ArithmeticException
-如果结果不精确但舍入模式
UNNECESSARY
。
round(MathContext)
public int signum()
BigDecimal
signum函数。
BigDecimal
值为负,零或正。
public int scale()
BigDecimal
的规模。如果零或正,规模是小数点右边的数字的位数。如果负的数量不成比例的值乘以十规模的否定的力量。例如,一个规模
-3
意味着不成比例的值乘以1000。
BigDecimal
规模。
public int precision()
BigDecimal
的精度。(精度在不成比例的价值。位数)
1值的精度为一零。
BigDecimal
精度。
public BigInteger unscaledValue()
BigInteger
其价值是本
BigDecimal
的不成比例的价值。(计算
(this * 10this.scale())。)
BigDecimal
不成比例的价值。
public BigDecimal round(MathContext mc)
mc
的情况下使用。
BigDecimal
圆形根据
MathContext
设置。
ArithmeticException
如果舍入模式
UNNECESSARY
和
BigDecimal
操作需要舍入。
plus(MathContext)
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
BigDecimal
其规模是规定值,且不成比例的价值乘以或除以
BigDecimal
的缩放值十的合适的电源来维持其整体价值的确定。若按操作减少,不成比例的值必须是可分的(而不是增加),和值可能会发生变化;在这种情况下,指定的舍入模式应用于分。
请注意,由于BigDecimal对象是不可变的,这种方法要求在原对象的修改做不结果,相反有方法命名为setX变异场相反的惯例,setScale
返回与适度规模的目标;返回的对象可能会或可能不会被重新分配。
newScale
的
BigDecimal
值返回。
roundingMode
的舍入模式适用。
BigDecimal
其规模是规定值,且不成比例的价值乘以或除以
BigDecimal
的缩放值十的合适的电源来维持其整体价值的确定。
ArithmeticException
-如果
roundingMode==UNNECESSARY
和指定的缩放操作需要舍入。
RoundingMode
public BigDecimal setScale(int newScale, int roundingMode)
BigDecimal
其规模是规定值,且不成比例的价值乘以或除以
BigDecimal
的缩放值十的合适的电源来维持其整体价值的确定。若按操作减少,不成比例的值必须是可分的(而不是增加),和值可能会发生变化;在这种情况下,指定的舍入模式应用于分。
请注意,由于BigDecimal对象是不可变的,这种方法要求在原对象的修改做不结果,相反有方法命名为setX变异场相反的惯例,setScale
返回与适度规模的目标;返回的对象可能会或可能不会被重新分配。
新setScale(int, RoundingMode)
方法应该优先使用这种传统的方法。
newScale
的
BigDecimal
值返回。
roundingMode
的舍入模式适用。
BigDecimal
其规模是规定值,且不成比例的价值乘以或除以
BigDecimal
的缩放值十的合适的电源来维持其整体价值的确定。
ArithmeticException
-如果
roundingMode==ROUND_UNNECESSARY
和指定的缩放操作需要舍入。
IllegalArgumentException
-如果
roundingMode
没有表示一个有效的舍入模式。
ROUND_UP
,
ROUND_DOWN
,
ROUND_CEILING
,
ROUND_FLOOR
,
ROUND_HALF_UP
,
ROUND_HALF_DOWN
,
ROUND_HALF_EVEN
,
ROUND_UNNECESSARY
public BigDecimal setScale(int newScale)
BigDecimal
其规模是指定的值,其值是数值等于该
BigDecimal
,抛出一个
ArithmeticException
如果这是不可能的。
这个电话通常是用来增加规模,在这种情况下,这是保证存在一个BigDecimal
指定的尺度和正确的价值。电话也可以用来当调用者知道BigDecimal
在其小数部分的一端有足够多的零点降低规模(即,十因素在其整数)允许的调整没有改变它的值。
该方法将返回相同的结果作为setScale
两参数的版本,但节省了调用的情况下是不相关的指定舍入模式的麻烦。
值得注意的是,由于BigDecimal
对象是不可变的,这种方法要求在原对象的修改做不结果,相反有方法命名为setX变异场相反的惯例,setScale
返回与适度规模的目标;返回的对象可能会或可能不会被重新分配。
newScale
的
BigDecimal
值返回。
BigDecimal
其规模是规定值,且不成比例的价值乘以或除以
BigDecimal
的缩放值十的合适的电源来维持其整体价值的确定。
ArithmeticException
-如果指定的缩放操作需要舍入。
setScale(int, int)
,
setScale(int, RoundingMode)
public BigDecimal movePointLeft(int n)
BigDecimal
相当于一个与小数点移动
n
地方留下。如果
n
是非负的,电话只是增加了
n
的规模。如果
n
是负的,相当于
movePointRight(-n)
呼叫。的
BigDecimal
此调用所返回的值
(this × 10-n)和规模
max(this.scale()+n, 0)
。
n
-地方移动小数点左边的数字。
BigDecimal
相当于一个与小数点移动
n
地方留下。
ArithmeticException
如果规模溢出。
public BigDecimal movePointRight(int n)
BigDecimal
相当于这一
n
小数点移动到正确的地方。如果
n
是非负的,电话只是减去
n
从规模。如果
n
是负的,相当于
movePointLeft(-n)
呼叫。的
BigDecimal
此调用所返回的值
(this × 10n)和规模
max(this.scale()-n, 0)
。
n
-地方移动小数点右边的数。
BigDecimal
相当于这一
n
小数点移动到正确的地方。
ArithmeticException
如果规模溢出。
public BigDecimal scaleByPowerOfTen(int n)
this
×10
n)。结果的规模
(this.scale() - n)
。
n
-十规模的幂
this
×10
n)
ArithmeticException
-如果规模将在一个32位的整数范围。
public BigDecimal stripTrailingZeros()
BigDecimal
,数值上等于这一但任何尾随零从表示删除。例如,从
BigDecimal
价值
600.0
剥离尾随零,具有[
BigInteger
,
scale
]成分等于[ 6000,1 ],以[
BigInteger
产量
6E2
,
scale
]成分等于[ 6,2 ]。如果BigDecimal的数值等于零,然后
BigDecimal.ZERO
返回。
BigDecimal
。
public int compareTo(BigDecimal val)
BigDecimal
与指定的
BigDecimal
比较。两
BigDecimal
对象是平等的价值,但有不同的尺度(如2和2)被视为相等的方法。此方法提供了对六个布尔比较运算符(<,= = = = = =的”的每个方法的单独方法的偏好性,!=,< =)。建议的成语进行比较:
(x.compareTo(y)
< >
0)
OP,OP>,<六个比较运算符。
compareTo
接口
Comparable<BigDecimal>
val
-
BigDecimal
这
BigDecimal
是比较。
BigDecimal
数值小于,等于,或大于
val
。
public boolean equals(Object x)
equals
方法重写,继承类
Object
x
-
Object
这
BigDecimal
是比较。
true
当且仅当指定的
Object
是
BigDecimal
其价值和规模相当于该
BigDecimal
的。
compareTo(java.math.BigDecimal)
,
hashCode()
public BigDecimal min(BigDecimal val)
BigDecimal
和
val
最小。
val
值,最小的是计算机。
BigDecimal
其价值是本
BigDecimal
和
val
小。如果他们是平等的,由
compareTo
方法定义,
this
返回。
compareTo(java.math.BigDecimal)
public BigDecimal max(BigDecimal val)
BigDecimal
和
val
最大。
val
值与最大值被计算。
BigDecimal
其价值是本
BigDecimal
和
val
大。如果他们是平等的,由
compareTo
方法定义,
this
返回。
compareTo(java.math.BigDecimal)
public int hashCode()
BigDecimal
哈希代码。值得注意的是,两
BigDecimal
对象相等但不同尺度(如2和2)一般会不具有相同的哈希代码。
hashCode
方法重写,继承类
Object
BigDecimal
哈希代码。
equals(Object)
public String toString()
BigDecimal
字符串表示,如果指数是需要使用科学记数法。
一个标准的正则字符串形式的BigDecimal
是通过以下步骤创建:第一,虽然对BigDecimal
不成比例的绝对值转换为字符的使用没有前导零的'0'
通过'9'
基地十在一个字符串(除非它的值是零,在这种情况下,一个单一的'0'
使用字符)。
接下来,一个调整指数计算;这是否定的规模,加上不成比例的价值转换的字符数,少了一个。那是,-scale+(ulength-1)
,哪里ulength
是十进制数字的缩放值的绝对值的长度(其精度)。
如果规模大于或等于零,调整指数大于或等于-6
,数将被转换为一个字符形式不使用指数符号。在这种情况下,如果规模为零,则没有添加小数点,如果规模是积极的,将插入一个小数点指定的字符数的小数点右边的小数点。'0'
字符添加到转换不成比例的值的左侧是必要的。如果没有字符之前的小数点后插入然后常规'0'
字符的前缀。
否则(即,如果规模是负的,或调整指数小于-6
),数将被转换为一个使用指数符号字符形式。在这种情况下,如果转换BigInteger
不止有一个数字的小数点后第一位插入。在性格形成一个指数,然后后缀的转换不成比例的价值(也许插入小数点);这包括信'E'
之后紧接着是调整指数转换为字符形式。后者是在基地十个,利用人物的'0'
通过没有前导零'9'
,并总是以一个标志性'-'
('\u002D')如果调整指数是负的,'+'
('\u002B')否则)。
最后,整个字符串将以减号作为前缀字符'-'
('\u002D')如果不成比例的值小于零。无符号字符的前缀如果不成比例的价值为零或正。
实例:
每个表示[不成比例的价值,规模]在左边,结果字符串显示在右边。
【123,0 ]“123”[ 123,0 ]“123”[ 123,1 ]“1.23e + 3”[ 123,3 ]“1.23e + 5”[ 123,1 ]“12.3”[ 123,5 ]“0.00123”[ 123,10 ]“1.23e-8”[ 123,12 ]”1.23e-10”笔记:
BigDecimal
值和转换结果之间一对一的映射。那是,每个区分BigDecimal
值(不成比例的价值和规模)有一个独特的字符串表示由于使用toString
。如果字符串表示形式转换回一个BigDecimal
使用BigDecimal(String)
构造函数,然后原来的值将被收回。NumberFormat
类及其子类处理。toEngineeringString()
方法可用于展示数字与工程符号指数,和setScale
方法可用于BigDecimal
所以舍去小数点后的位数有一个已知的。Character.forDigit
提供的应用。toString
方法重写,继承类
Object
BigDecimal
字符串表示形式。
Character.forDigit(int, int)
,
BigDecimal(java.lang.String)
public String toEngineeringString()
BigDecimal
返回字符串表示,如果指数是需要使用工程符号。
返回一个字符串,表示BigDecimal
在toString()
方法的描述,但如果指数符号的使用,十的功率调整为三的倍数(工程符号)这样的非零值的整数部分将在范围1到999。如果使用指数符号为0值,则使用一个小数点和一个或两个分数零位,使零值的刻度保持。值得注意的是,不同于toString()
输出,该方法的输出是不能保证收回同样的[整数,如果输出字符串转换回一个BigDecimal
使用string constructor这BigDecimal
规模]对。这种方法的结果满足弱约束总是使用字符串构造函数方法的输出产生一个数值相等的结果。
BigDecimal
字符串表示,如果指数是需要使用工程符号。
public String toPlainString()
BigDecimal
字符串表示形式。对于一个正比例的值,小数点右边的数字的位数是用来表示刻度的。对于具有一零个或负尺度的值,产生的字符串,如果值被转换为一个数值等于零的规模和,如果所有的零规模的值的尾随零的结果。整个字符串将以减号作为前缀字符“-”(
'\u002D')如果不成比例的值小于零。无符号字符的前缀如果不成比例的价值为零或正。注意,如果该方法的结果传递给
string constructor,只有这个
BigDecimal
数值必然会恢复;对新
BigDecimal
表示可能有不同的尺度。特别是,如果这
BigDecimal
具有负的规模,通过这种方法得到的字符串将有零规模时处理的字符串的构造函数。(此方法的行为类似于1.4
toString
方法和更早的版本。)
BigDecimal
字符串表示形式。
toString()
,
toEngineeringString()
public BigInteger toBigInteger()
BigInteger
BigDecimal
。这种转换是类似于缩小基本转换从
double
到
long
在
The Java™ Language Specification第定义:本
BigDecimal
任何小数部分将被丢弃。请注意,这种转换可以失去的
BigDecimal
值的精度信息。
有一个例外,如果转换不精确抛(换句话说,如果一个非零的小数部分被丢弃),使用toBigIntegerExact()
方法。
BigDecimal
转换为
BigInteger
。
public BigInteger toBigIntegerExact()
BigInteger
BigDecimal
,检查丢失的信息。如果这
BigDecimal
具有非零的小数部分抛异常。
BigDecimal
转换为
BigInteger
。
ArithmeticException
this
-如果有一个非零的小数部分。
public long longValue()
long
BigDecimal
。这种转换是类似于缩小基本转换从
double
到
short
在
The Java™ Language Specification第定义:本
BigDecimal
任何小数部分将被丢弃,如果产生的“
BigInteger
”太大,适合在一个
long
,只返回低阶64位。请注意,这种转换也能返回一个具有相反的符号结果失去这
BigDecimal
值总体大小和精度信息。
public long longValueExact()
long
BigDecimal
,检查丢失的信息。如果这
BigDecimal
具有非零的小数部分或不可能的范围内,一个
long
结果然后
ArithmeticException
抛出。
BigDecimal
转换为
long
。
ArithmeticException
this
-如果有一个非零的小数部分,或不适合在
long
。
public int intValue()
int
BigDecimal
。这种转换是类似于缩小基本转换从
double
到
short
在
The Java™ Language Specification第定义:本
BigDecimal
任何小数部分将被丢弃,如果产生的“
BigInteger
”太大,装在一个
int
,只返回低阶32位。请注意,这种转换也能返回一个具有相反的符号结果失去这
BigDecimal
值总体大小和精度信息。
public int intValueExact()
int
BigDecimal
,检查丢失的信息。如果这
BigDecimal
具有非零的小数部分或不可能的范围内,一个
int
结果然后
ArithmeticException
抛出。
BigDecimal
转换为
int
。
ArithmeticException
this
-如果有一个非零的小数部分,或不适合在
int
。
public short shortValueExact()
short
BigDecimal
,检查丢失的信息。如果这
BigDecimal
具有非零的小数部分或不可能的范围内,一个
short
结果然后
ArithmeticException
抛出。
BigDecimal
转换为
short
。
ArithmeticException
this
-如果有一个非零的小数部分,或不适合在
short
。
public byte byteValueExact()
byte
BigDecimal
,检查丢失的信息。如果这
BigDecimal
具有非零的小数部分或不可能的范围内,一个
byte
结果然后
ArithmeticException
抛出。
BigDecimal
转换为
byte
。
ArithmeticException
this
-如果有一个非零的小数部分,或不适合在
byte
。
public float floatValue()
float
BigDecimal
。这种转换是类似的缩小基本转换从
double
到
float
在
The Java™ Language Specification第定义:如果这
BigDecimal
有太大的值代表一个
float
,它将被转换为
Float.NEGATIVE_INFINITY
或
Float.POSITIVE_INFINITY
适当。请注意,即使当返回值是有限的,这种转换可以失去的
BigDecimal
值的精度信息。
floatValue
方法重写,继承类
Number
BigDecimal
转换为
float
。
public double doubleValue()
double
BigDecimal
。这种转换是类似的缩小基本转换从
double
到
float
在
The Java™ Language Specification第定义:如果这
BigDecimal
有太大的幅度代表作为一个
double
,它将被转换为
Double.NEGATIVE_INFINITY
或
Double.POSITIVE_INFINITY
适当。请注意,即使当返回值是有限的,这种转换可以失去的
BigDecimal
值的精度信息。
doubleValue
方法重写,继承类
Number
BigDecimal
转换为
double
。
public BigDecimal ulp()
BigDecimal
。一个非零的值
BigDecimal
ULP这是价值和价值
BigDecimal
下较大的幅度与相同的位数之间的正距离。一零价值的ULP的数值等于1的
this
规模。结果存储规模
this
一样,零和非零的值,结果等于
[1, this.scale()]
。
this
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.