|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.lang.Number
java.math.BigDecimal
public class BigDecimal
변경이 불가능한, 임의 정밀도의 부호 첨부 소수입니다. BigDecimal 는, 임의 정밀도의 「스케일 없음의 정수치」라고, 32 비트 정수의 「스케일」로 구성됩니다. 0 또는 정의 경우, 스케일은 소수점 이하의 자리수입니다. 부의 경우, 스케일 없음의 수치에, 스케일의 정부를 반대로 한 값을 지수로 하는 10 의 누승을 곱셈합니다. 즉,BigDecimal 로 나타내지는 수치는 (unscaledValue × 10-scale) 입니다.
BigDecimal 클래스는, 산술, 스케일 조작, 둥근, 비교, 핫싱, 및 서식 변환의 연산을 제공합니다. toString()
메소드는 BigDecimal 의 정규 표현을 제공합니다.
BigDecimal 클래스는, 사용자가 둥근 동작을 완전하게 제어할 수 있도록(듯이) 합니다. 둥근 모드가 지정되지 않고, 정확한 결과를 표현할 수 없는 경우, 예외가 throw 됩니다. 그렇지 않은 경우, 연산에 적절한 MathContext
객체를 지정하는 것으로, 선택된 정밀도와 둥근 모드로 계산이 실행됩니다. 어느 쪽의 경우도, 둥근 제어에 8 개의 「둥근 모드」가 제공됩니다. 이 클래스의 정수 필드 (ROUND_HALF_UP
등)를 사용해 둥근 모드를 나타내는 것은 거의 행해지지 않습니다. RoundingMode enum (RoundingMode.HALF_UP
등)의 열거치를 사용해 주세요.
MathContext 객체에 정밀도 설정 0 (예: MathContext.UNLIMITED
)이 지정되고 있는 경우, 그 산술 메소드는 MathContext 객체를 사용하지 않기 때문에, 산술 연산은 정확합니다. 이것은, 릴리스 5 보다 전으로 지원되고 있던 유일한 동작입니다. 결과의 계산이 정확하기 때문에, 정밀도 0 의 설정을 가지는 MathContext 의 둥근 모드 설정은 사용되지 않고, 무관계합니다. 제산의 경우, 정확한 상은 소수점 이하가 무한의 길이를 가질 가능성이 있습니다 (예: 1 ÷ 3). 상의 소수점 이하가 무한해, 연산이 정확한 결과를 돌려주도록(듯이) 지정되고 있는 경우,ArithmeticException 가 throw 됩니다. 그렇지 않은 경우, 다른 연산과 같게, 제산의 정확한 결과가 돌려주어집니다.
정밀도 설정이 0 이 아닌 경우,BigDecimal 의 산술 규칙은, ANSI X3. 274-1996 및 ANSI X3. 274-1996/AM 1-2000 (섹션 7.4)로 정의되고 있는, 선택된 연산 모드와 광범위한 호환성이 있습니다. 이러한 규격과는 달라,BigDecimal 에는, 릴리스 5 보다 전의 BigDecimal 의 제산으로 필수였다 많은 둥근 모드가 있습니다. 이러한 ANSI 규격과 BigDecimal 스펙의 경합은,BigDecimal 를 우선하는 방법으로 해결됩니다.
같은 수치에서도 표현이 다를 (스케일이 다를) 가능성이 있기 (위해)때문에, 산술 및 둥근 규칙은, 수치적인 결과와 결과의 표현에 사용하는 스케일의 양쪽 모두를 지정할 필요가 있습니다.
일반적으로, 정확한 결과에 반환되는 자리수보다 대부분 (제산의 경우는 무한대도)의 자리수가 있는 경우, 둥근 모드와 정밀도 설정에 의해, 연산이 돌려주는 결과의 자리수가 정해집니다. 우선, 반환되는 자리수의 합계수는 MathContext 의 precision 설정으로 지정됩니다. 이것에 의해, 결과의 「정밀도」가 결정됩니다. 자리수의 카운트는, 정확한 결과의 가장 왼쪽의 0 이 아닌 자리수로부터 시작됩니다. 둥근 모드에서는, 파기되는 자리수가 반환되는 결과에 어떻게 영향을 줄지가 결정됩니다.
모든 산술 연산자에서는, 연산은, 우선 정확한 중간 결과를 계산해, 다음에 선택된 둥근 모드를 사용해 (필요한 경우는) 정밀도 설정으로 지정된 자리수에 말다고 하는 순서로 실행됩니다. 정확한 결과가 돌려주어지지 않은 경우, 정확한 결과의 몇개의 자리수 위치가 파기됩니다. 둥근에 의해, 반환되는 결과의 절대치가 증가하는 경우, 선두의 「9」의 자리수에 대해서 자리수의 앞당기기를 실행하는 것으로 새로운 자리수 위치를 작성할 수 있습니다. 예를 들어, 999.9 라고 하는 값을 절상해 3 자리수에 말면(자), 1000 으로 동일해져, 이것은 100×101 으로서 표현됩니다. 이러한 경우, 새롭게 「1」이 반환되는 결과의 선두의 자리수 위치가 됩니다.
논리적으로 정확한 결과외, 각 산술 연산에는 결과를 표현하기 위해서 우선되는 스케일이 있습니다. 각 연산의 우선 스케일을, 다음의 겉(표)에 나타냅니다.
연산 | 우선되는 결과의 스케일 |
---|---|
가산 | max(addend.scale(), augend.scale()) |
감산 | max(minuend.scale(), subtrahend.scale()) |
곱셈 | multiplier.scale() + multiplicand.scale() |
제산 | dividend.scale() - divisor.scale() |
둥근 전은, 논리적으로 정확한 중간 결과의 스케일이 그 연산의 우선 스케일입니다. 정확한 수치 결과를 precision
자리수로 표현할 수 없는 경우, 둥근에 의해 돌려주는 자리수 세트가 선택되어 그 결과의 스케일은 중간 결과의 스케일로부터, 실제로 반환되는 precision
자리수를 나타낼 수 있는 최소의 스케일에 축소됩니다. 정확한 결과가 precision
자리수로 표현할 수 있는 경우, 그 결과의 표현은 우선 스케일에 가장 가까운 스케일로 돌려주어집니다. 특히, 정확하게 표현 가능한 상은, 후속의 0 으로 삭제해, 스케일을 작게 하는 것으로,precision
자리수보다 적은 자리수로 표현할 수 있습니다. 예를 들어,floor 둥근 모드를 사용한 3 자리수에의 둥근에서는, 다음과 같이 됩니다.
19/100 = 0.19 // integer=19, scale=2
다만, 다음도 성립됩니다.
21/110 = 0.190 // integer=190, scale=3
가산, 감산, 및 곱셈에서는, 스케일의 축소는, 정확한 결과의 파기되는 자리수 위치의 수로 동일해지는 점에 주의해 주세요. 둥근에 의한 자리수의 앞당기기로 새로운 상위의 자리수 위치가 작성되는 경우, 새로운 자리수 위치가 작성되지 않으면 결과의 추가된 자리수는 파기됩니다.
다른 메소드는, 조금 다른 둥근 시멘틱스를 가질 가능성이 있습니다. 예를 들어,지정된 알고리즘을 사용하는 pow 메소드의 결과는, 말 수 있었던 수학적 결과와 1 ulp 이상 다른 경우가 있습니다.
BigDecimal 의 스케일 조작에는, 슬캘링/둥근 연산과 소수점 이동 연산의 2 종류가 있습니다. 슬캘링/둥근 연산 (setScale
와 round
)은, 값이 오퍼랜드의 값과 거의 (또는 정확히) 동일하지만 스케일 또는 정밀도는 지정된 값인 BigDecimal 를 돌려줍니다. 이 연산에서는, 값에 대해서 최소한의 영향으로, 포함되는 수치의 정밀도가 상하합니다. 소수점 이동 연산 (movePointLeft
와 movePointRight
)은, 지정한 방향으로 지정한 자리수만 소수점을 이동하는 것으로써 오퍼랜드로부터 작성되는 BigDecimal 를 돌려줍니다.
설명을 알기 쉽고 간결하게 하기 위해서,BigDecimal 메소드의 설명에서는 전체를 통해 의사 코드를 사용합니다. 의사 코드식 (i + j) 은, 「값이 BigDecimal i 의 값과 BigDecimal j 의 값의 화인 BigDecimal」를 나타냅니다. 의사 코드식 (i == j) 은, 「BigDecimal i 가 BigDecimal j 와 같은 값을 나타내는 경우에만 true 인 것」을 나타냅니다. 다른 의사 코드식도 똑같이 해석됩니다. 꺽쇄묶음은,BigDecimal 치를 정의하는 특별한 BigInteger 와 스케일의 페어를 나타내기 위해서(때문에) 사용됩니다. 예를 들어,[19, 2] 는, 스케일 2 를 가지는 0.19 로 수치적으로 동일한 BigDecimal 입니다.
주:BigDecimal 객체를 SortedMap
의 키 또는 SortedSet
의 요소로서 사용하는 경우는, 주의해 주세요. BigDecimal 의 「자연 순서 붙이고」가 「equals 와 모순된다」로부터입니다. 자세한 것은,Comparable
,SortedMap
, 또는 SortedSet
를 참조해 주세요.
이 클래스의 메소드 및 생성자 은 모두, 입력 파라미터에 대해서 null 객체 참조가 건네받으면(자) NullPointerException 를 throw 합니다.
BigInteger
,
MathContext
,
RoundingMode
,
SortedMap
,
SortedSet
,
직렬화 된 형식 필드의 개요 | |
---|---|
static BigDecimal |
ONE
스케일 0 의 값 1 입니다. |
static int |
ROUND_CEILING
정의 무한대에 가까워지도록(듯이) 마는 모드입니다. |
static int |
ROUND_DOWN
0 에 가까워지도록(듯이) 마는 모드입니다. |
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
0 로부터 멀어지도록(듯이) 마는 모드입니다. |
static BigDecimal |
TEN
스케일 0 의 값 10 입니다. |
static BigDecimal |
ZERO
스케일 0 의 값 0 입니다. |
생성자 의 개요 | |
---|---|
BigDecimal (BigInteger val)
BigInteger 을 BigDecimal 로 변환합니다. |
|
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 의 문자 배열 표현을 BigDecimal 로 변환해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받습니다. |
|
BigDecimal (char[] in,
int offset,
int len)
BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받아, 부분 배열의 지정을 가능하게 합니다. |
|
BigDecimal (char[] in,
int offset,
int len,
MathContext mc)
부분 배열의 지정을 가능하게 해, 문맥 설정에 따른 둥근을 사용하면서,BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받습니다. |
|
BigDecimal (char[] in,
MathContext mc)
BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 문맥 설정에 따른 둥근을 사용해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받습니다. |
|
BigDecimal (double val)
double 를 double 의 바이너리 부동 소수점치의 정확한 10 진수 표현인 BigDecimal 로 변환합니다. |
|
BigDecimal (double val,
MathContext mc)
문맥 설정에 따른 둥근을 사용해,double 를 BigDecimal 로 변환합니다. |
|
BigDecimal (int val)
int 를 BigDecimal 로 변환합니다. |
|
BigDecimal (int val,
MathContext mc)
문맥 설정에 따른 둥근을 사용해,int 를 BigDecimal 로 변환합니다. |
|
BigDecimal (long val)
long 를 BigDecimal 로 변환합니다. |
|
BigDecimal (long val,
MathContext mc)
문맥 설정에 따른 둥근을 사용해,long 를 BigDecimal 로 변환합니다. |
|
BigDecimal (String val)
BigDecimal의 캐릭터 라인 표현을 BigDecimal 로 변환합니다. |
|
BigDecimal (String val,
MathContext mc)
BigDecimal 의 캐릭터 라인 표현을 BigDecimal 로 변환해, 문맥 설정에 따른 둥근을 사용해, 같은 캐릭터 라인을 BigDecimal(String) 생성자 으로서 받습니다. |
메소드의 개요 | |
---|---|
BigDecimal |
abs ()
값이 이 BigDecimal 의 절대치로 스케일이 this.scale() 의 BigDecimal를 돌려줍니다. |
BigDecimal |
abs (MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 이 BigDecimal 의 절대치인 BigDecimal 를 돌려줍니다. |
BigDecimal |
add (BigDecimal augend)
값이 (this + augend) 로 스케일이 max(this.scale(), augend.scale()) 의 BigDecimal 를 돌려줍니다. |
BigDecimal |
add (BigDecimal augend,
MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this + augend) 인 BigDecimal 를 돌려줍니다. |
byte |
byteValueExact ()
이 BigDecimal 를 byte 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. |
int |
compareTo (BigDecimal val)
이 BigDecimal 과 지정된 BigDecimal를 비교합니다. |
BigDecimal |
divide (BigDecimal divisor)
값이 (this / divisor) 로 우선 스케일이 (this.scale() - divisor.scale()) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divide (BigDecimal divisor,
int roundingMode)
값이 (this / divisor) 로 스케일이 this.scale() 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divide (BigDecimal divisor,
int scale,
int roundingMode)
값이 (this / divisor) 로, 스케일이 지정된 것인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divide (BigDecimal divisor,
int scale,
RoundingMode roundingMode)
값이 (this / divisor) 로, 스케일이 지정된 것인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divide (BigDecimal divisor,
MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this / divisor) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divide (BigDecimal divisor,
RoundingMode roundingMode)
값이 (this / divisor) 로 스케일이 this.scale() 인 BigDecimal 를 돌려줍니다. |
BigDecimal [] |
divideAndRemainder (BigDecimal divisor)
divideToIntegralValue 의 결과와 거기에 계속되는 2 개의 오퍼랜드의 remainder 의 결과를 포함한, 2 요소의 BigDecimal 배열을 돌려줍니다. |
BigDecimal [] |
divideAndRemainder (BigDecimal divisor,
MathContext mc)
문맥 설정에 따른 둥근을 사용해 계산된 divideToIntegralValue 의 결과와 2 개의 오퍼랜드의 remainder 의 결과를 포함한, 2 요소의 BigDecimal 배열을 돌려줍니다. |
BigDecimal |
divideToIntegralValue (BigDecimal divisor)
값을 말 수 있었던 상 (this / divisor) 의 정수부인 BigDecimal 를 돌려줍니다. |
BigDecimal |
divideToIntegralValue (BigDecimal divisor,
MathContext mc)
값이 (this / divisor) 의 정수부인 BigDecimal 를 돌려줍니다. |
double |
doubleValue ()
이 BigDecimal 를 double 로 변환합니다. |
boolean |
equals (Object x)
이 BigDecimal 와 지정된 Object 가 동일한지 어떤지를 비교합니다. |
float |
floatValue ()
이 BigDecimal 를 float 로 변환합니다. |
int |
hashCode ()
이 BigDecimal 의 해시 코드를 돌려줍니다. |
int |
intValue ()
이 BigDecimal 를 int 로 변환합니다. |
int |
intValueExact ()
이 BigDecimal 를 int 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. |
long |
longValue ()
이 BigDecimal 를 long 로 변환합니다. |
long |
longValueExact ()
이 BigDecimal 를 long 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. |
BigDecimal |
max (BigDecimal val)
이 BigDecimal 와 val 의 최대치를 돌려줍니다. |
BigDecimal |
min (BigDecimal val)
이 BigDecimal 와 val 의 최소치를 돌려줍니다. |
BigDecimal |
movePointLeft (int n)
소수점을 n 형좌에 이동해 이것에 동일한 BigDecimal 를 돌려줍니다. |
BigDecimal |
movePointRight (int n)
소수점을 n 형우에 이동해 이것에 동일한 BigDecimal 를 돌려줍니다. |
BigDecimal |
multiply (BigDecimal multiplicand)
값이 (this × multiplicand) 로 스케일이 (this.scale() + multiplicand.scale()) 의 BigDecimal 를 돌려줍니다. |
BigDecimal |
multiply (BigDecimal multiplicand,
MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this × multiplicand) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
negate ()
값이 (-this) 로 스케일이 this.scale() 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
negate (MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (-this) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
plus ()
값이 (+this) 로 스케일이 this.scale() 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
plus (MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (+this) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
pow (int n)
값이 (thisn) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
pow (int n,
MathContext mc)
값이 (thisn) 의 BigDecimal 를 돌려줍니다. |
int |
precision ()
이 BigDecimal 의 「정밀도」를 돌려줍니다. |
BigDecimal |
remainder (BigDecimal divisor)
값이 (this % divisor) 의 BigDecimal 를 돌려줍니다. |
BigDecimal |
remainder (BigDecimal divisor,
MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this % divisor) 인 BigDecimal 를 돌려줍니다. |
BigDecimal |
round (MathContext mc)
MathContext 설정에 따라 말 수 있었던 BigDecimal 를 돌려줍니다. |
int |
scale ()
이 BigDecimal 의 「스케일」을 돌려줍니다. |
BigDecimal |
scaleByPowerOfTen (int n)
수치가 (this * 10n)에 동일한 BigDecimal 를 돌려줍니다. |
BigDecimal |
setScale (int newScale)
스케일이 지정된 값이며, 값이 이 BigDecimal 과 같은 수치인,BigDecimal를 돌려줍니다. |
BigDecimal |
setScale (int newScale,
int roundingMode)
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal 를 돌려줍니다. |
BigDecimal |
setScale (int newScale,
RoundingMode roundingMode)
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal 를 돌려줍니다. |
short |
shortValueExact ()
이 BigDecimal 를 short 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. |
int |
signum ()
이 BigDecimal 의 부호치를 돌려줍니다. |
BigDecimal |
stripTrailingZeros ()
수치는 이것에 동일하지만, 후속의 0 이 표현으로부터 삭제된 BigDecimal 를 돌려줍니다. |
BigDecimal |
subtract (BigDecimal subtrahend)
값이 (this - subtrahend) 로 스케일이 max(this.scale(), subtrahend.scale()) 의 BigDecimal 를 돌려줍니다. |
BigDecimal |
subtract (BigDecimal subtrahend,
MathContext mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this - subtrahend) 인 BigDecimal 를 돌려줍니다. |
BigInteger |
toBigInteger ()
이 BigDecimal 를 BigInteger 로 변환합니다. |
BigInteger |
toBigIntegerExact ()
이 BigDecimal 를 BigInteger 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. |
String |
toEngineeringString ()
지수가 필요한 경우, 기술 표기법으로, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다. |
String |
toPlainString ()
지수 필드없이, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다. |
String |
toString ()
지수가 필요한 경우, 과학 표기법으로, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다. |
BigDecimal |
ulp ()
이 BigDecimal 의 ulp (최종자리수 단위)의 사이즈를 돌려줍니다. |
BigInteger |
unscaledValue ()
값이 이 BigDecimal 의 「스케일 없음의 값」인 BigInteger 를 돌려줍니다 ((this * 10this.scale()) 를 계산한다). |
static BigDecimal |
valueOf (double val)
Double.toString(double) 메소드로 제공되는double 의 표준적인 캐릭터 라인 표현을 사용해,double 를 BigDecimal 로 변환합니다. |
static BigDecimal |
valueOf (long val)
long 치를 스케일이 0 의 BigDecimal 로 변환합니다. |
static BigDecimal |
valueOf (long unscaledVal,
int scale)
long 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다. |
클래스 java.lang. Number 로부터 상속된 메소드 |
---|
byteValue , shortValue |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , finalize , getClass , notify , notifyAll , wait , wait , wait |
필드의 상세 |
---|
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
public static final int ROUND_FLOOR
public static final int ROUND_HALF_UP
public static final int ROUND_HALF_DOWN
public static final int ROUND_HALF_EVEN
public static final int ROUND_UNNECESSARY
생성자 의 상세 |
---|
public BigDecimal(char[] in, int offset, int len)
BigDecimal(String)
생성자 으로서 받아, 부분 배열의 지정을 가능하게 합니다.
문자 순서가 문자 배열내에서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해,BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.
in
- 문자의 소스인 char 배열offset
- 조사하는 배열의 최초의 문자len
- 검토하는 문자수
NumberFormatException
- in 가
BigDecimal 의 유효한 표현이 아닌 경우, 또는 정의된 부분 배열이
완전하게 in 내에 없는 경우public BigDecimal(char[] in, int offset, int len, MathContext mc)
BigDecimal(String)
생성자 으로서 받습니다.
문자 순서가 문자 배열내에서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해,BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.
in
- 문자의 소스인 char 배열offset
- 조사하는 배열의 최초의 문자len
- 검토하는 문자수mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우
NumberFormatException
- in 가
BigDecimal 의 유효한 표현이 아닌 경우, 또는 정의된 부분 배열이
완전하게 in 내에 없는 경우public BigDecimal(char[] in)
BigDecimal(String)
생성자 으로서 받습니다.
문자 순서가 문자 배열로서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해 BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.
in
- 문자의 소스인 char 배열
NumberFormatException
- in 가
BigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우public BigDecimal(char[] in, MathContext mc)
BigDecimal(String)
생성자 으로서 받습니다.
문자 순서가 문자 배열로서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해 BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.
in
- 문자의 소스인 char 배열mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우
NumberFormatException
- in 가
BigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우public BigDecimal(String val)
소수부는, 소수점과 0 자리수 이상의 10 진수자로 구성됩니다. 이 캐릭터 라인에서는, 정수부 또는 소수부가 적어도 1 자리수는 필요합니다. 부호, 정수부, 소수부로부터 되는 숫자는 「유효 숫자」라고 불립니다.
지수는, 「e」( 「\u0065」) 또는 「E」( 「\u0045」)이라고 하는 문자에, 1 개(살) 이상의 10 진수자가 계속되는 형태로 구성됩니다. 지수치는 -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:
- 숫자
- Digits Digit
- Digit:
Character.isDigit(char)
가 true 를 돌려주는 임의의 문자 (0, 1, 2 등)
반환되는 BigDecimal 의 스케일은, 소수부의 자리수 또는 0 (캐릭터 라인에 소수부가 없는 경우)이 되어, 지수를 조정합니다. 캐릭터 라인에 지수가 있는 경우, 스케일로부터 지수가 감산됩니다. 결과의 스케일치는,Integer.MIN_VALUE 로부터 Integer.MAX_VALUE 의 범위의 값이 아니면 안됩니다.
문자로부터 숫자에의 매핑은 Character.digit(char, int)
로 제공되어 기수 10 에의 변환으로 설정됩니다. String 에는, 올바르지 않은 문자 (공백등)를 포함할 수 없습니다.
례:
반환되는 BigDecimal 의 값은, 「유효 숫자」× 10 exponent 와 동일해집니다. 좌측으로 각 캐릭터 라인, 우측으로 결과의 표현 [BigInteger, scale] 가 나타납니다.
"0" [0,0] "0.00" [0,2] "123" [123,0] "-123" [-123, 0] "1.23E3" [123,-1] "1.23E+3" [123,-1] "12.3E+7" [123,-6] "12.0" [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,0]
주:float 및 double 의 NaN, 및 ±Infinity 이외의 값으로는, 이 생성자 은 Float.toString(float)
및 Double.toString(double)
로 반환되는 값과 호환성이 있습니다. 이 방법에서는,BigDecimal(double)
생성자 으로 예측을 할 수 없는 것에 밤영향을 받지 않기 때문에,float 또는 double 를 BigDecimal 로 변환하는 바람직한 방법입니다.
val
- BigDecimal 의 캐릭터 라인 표현
NumberFormatException
- val 가
BigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우public BigDecimal(String val, MathContext mc)
BigDecimal(String)
생성자 으로서 받습니다.
val
- BigDecimal 의 캐릭터 라인 표현mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우
NumberFormatException
- val 가
BigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우public BigDecimal(double val)
주:
Double.toString(double)
메소드와 BigDecimal(String)
생성자 을 사용해 double 를 String 로 변환했을 때와 같은 결과는 되지 않는다. 같은 결과를 얻으려면 ,static valueOf(double)
메소드를 사용한다
val
- BigDecimal 로 변환한다
double 치
NumberFormatException
- val 가 무한한가 NaN 인 경우public BigDecimal(double val, MathContext mc)
이 생성자 의 결과는 예상외일 가능성이 있기 (위해)때문에, 일반적으로 사용은 추천하지 않습니다. BigDecimal(double)
생성자 의 주를 참조해 주세요.
val
- BigDecimal 로 변환한다
double 치mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
RoundingMode 가 UNNECESSARY 의 경우
NumberFormatException
- val 가 무한한가 NaN 인 경우public BigDecimal(BigInteger val)
val
- BigDecimal 로 변환한다
BigInteger 치public BigDecimal(BigInteger val, MathContext mc)
val
- BigDecimal 로 변환한다
BigInteger 치mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal(BigInteger unscaledVal, int scale)
unscaledVal
- BigDecimal 의 스케일 없음의 값scale
- BigDecimal 의 스케일public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
unscaledVal
- BigDecimal 의 스케일 없음의 값scale
- BigDecimal 의 스케일mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal(int val)
val
- BigDecimal 로 변환한다
int 치public BigDecimal(int val, MathContext mc)
val
- BigDecimal 로 변환하는 int 치mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal(long val)
val
- BigDecimal 로 변환하는 long 치public BigDecimal(long val, MathContext mc)
val
- BigDecimal 로 변환하는 long 치mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우메소드의 상세 |
---|
public static BigDecimal valueOf(long unscaledVal, int scale)
unscaledVal
- BigDecimal 의 스케일 없음의 값scale
- BigDecimal 의 스케일
public static BigDecimal valueOf(long val)
val
- BigDecimal 의 값
public static BigDecimal valueOf(double val)
Double.toString(double)
메소드로 제공되는double 의 표준적인 캐릭터 라인 표현을 사용해,double 를 BigDecimal 로 변환합니다.
주: 이것은,double (또는 float)를 BigDecimal 로 변환하기 위한 추천 되는 방법입니다. 반환되는 값은,Double.toString(double)
를 사용했을 경우의 결과로부터 BigDecimal 를 구축한 결과와 동일하기 때문입니다.
val
- BigDecimal 로 변환하는 double
NumberFormatException
- val 가 무한한가 NaN 인 경우public BigDecimal add(BigDecimal augend)
augend
- 이 BigDecimal 에 가산하는 값
public BigDecimal add(BigDecimal augend, MathContext mc)
augend
- 이 BigDecimal 에 가산하는 값mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal subtract(BigDecimal subtrahend)
subtrahend
- 이 BigDecimal 로부터 감산하는 값
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
subtrahend
- 이 BigDecimal 로부터 감산하는 값mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal multiply(BigDecimal multiplicand)
multiplicand
- 이 BigDecimal 로 곱셈하는 값
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
multiplicand
- 이 BigDecimal 로 곱셈하는 값mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
이 유산 메소드보다, 새로운 divide(BigDecimal, int, RoundingMode)
메소드를 사용해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값scale
- 반환되는 BigDecimal 의 상의 스케일roundingMode
- 적용하는 둥근 모드
ArithmeticException
- divisor 가 0 으로,
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)
divisor
- 이 BigDecimal 를 제산하는 값scale
- 반환되는 BigDecimal 의 상의 스케일roundingMode
- 적용하는 둥근 모드
ArithmeticException
- divisor 가 0 으로,
roundingMode==RoundingMode.UNNECESSARY 이며,
지정한 스케일이 제산의 결과를 정확하게 나타내려면
충분하지 않은 경우public BigDecimal divide(BigDecimal divisor, int roundingMode)
이 유산 메소드보다, 새로운 divide(BigDecimal, RoundingMode)
메소드를 사용해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값roundingMode
- 적용하는 둥근 모드
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)
divisor
- 이 BigDecimal 를 제산하는 값roundingMode
- 적용하는 둥근 모드
ArithmeticException
- divisor==0 인 경우, 또는
roundingMode==RoundingMode.UNNECESSARY 이며,
this.scale() 가 제산의 결과를 정확하게 나타내려면
충분하지 않은 경우public BigDecimal divide(BigDecimal divisor)
divisor
- 이 BigDecimal 를 제산하는 값
ArithmeticException
- 정확한 상의 소수점 이하가
무한한 경우public BigDecimal divide(BigDecimal divisor, MathContext mc)
divisor
- 이 BigDecimal 를 제산하는 값mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 또는
mc.precision == 0 또한 상의 소수점 이하가
무한한 경우public BigDecimal divideToIntegralValue(BigDecimal divisor)
(this.scale() - divisor.scale())
입니다.
divisor
- 이 BigDecimal 를 제산하는 값
ArithmeticException
- divisor==0 인 경우public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
(this.scale() - divisor.scale())
입니다. 정확한 상의 정수부에 mc.precision 보다 많은 자리수가 필요한 경우,ArithmeticException 가 throw 됩니다.
divisor
- 이 BigDecimal 를 제산하는 값mc
- 사용하는 문맥
ArithmeticException
- divisor==0 인 경우
ArithmeticException
- mc.precision 가 0 보다 크고,
결과에 mc.precision 보다 자리수가 많은 정밀도가 필요한 경우public BigDecimal remainder(BigDecimal divisor)
잉여는 this.subtract(this.divideToIntegralValue(divisor). multiply(divisor)) 에 의해 제공됩니다. 이것은 모듈로 연산은 아닌 (부의 결과가 가능)인 것에 유의해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값
ArithmeticException
- divisor==0 인 경우public BigDecimal remainder(BigDecimal divisor, MathContext mc)
잉여는 this.subtract(this.divideToIntegralValue(divisor). multiply(divisor)) 에 의해 제공됩니다. 이것은 모듈로 연산은 아닌 (부의 결과가 가능)인 것에 유의해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값mc
- 사용하는 문맥
ArithmeticException
- divisor==0 인 경우
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우, 또는 mc.precision 가
0 보다 크고,this.divideToIntgralValue(divisor) 의
결과에 mc.precision 보다 자리수가 많은 정밀도가 필요한 경우divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
public BigDecimal [] divideAndRemainder(BigDecimal divisor)
정수의 상과 잉여의 양쪽 모두가 필요한 경우,divideToIntegralValue 메소드와 remainder 메소드를 따로 따로 사용하는 것보다, 제산을 1 회만 실행하면 좋은 이 메소드가 고속으로 있는 것에 유의해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값,
및 계산된 잉여
ArithmeticException
- divisor==0 인 경우divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
,
remainder(java.math.BigDecimal, java.math.MathContext)
public BigDecimal [] divideAndRemainder(BigDecimal divisor, MathContext mc)
정수의 상과 잉여의 양쪽 모두가 필요한 경우,divideToIntegralValue 메소드와 remainder 메소드를 따로 따로 사용하는 것보다, 제산을 1 회만 실행하면 좋은 이 메소드가 고속으로 있는 것에 유의해 주세요.
divisor
- 이 BigDecimal 를 제산하는 값,
및 계산된 잉여mc
- 사용하는 문맥
ArithmeticException
- divisor==0 인 경우
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)
파라미터 n 는, 0 에서 999999999 의 범위에 들어가고 있을 필요가 있습니다. ZERO.pow(0) 는 ONE
를 돌려줍니다.
장래의 릴리스에서는, 이 메소드의 지수의 허용 범위가 확장될 가능성이 있습니다.
n
- 이 BigDecimal 의 누승
ArithmeticException
- n 가 범위외에 있는 경우public BigDecimal pow(int n, MathContext mc)
X3. 274-1996 알고리즘은, 다음과 같습니다.
ONE
가 반환된다.
n
- 이 BigDecimal 의 누승mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우, 또는 n 가
범위외인 경우public BigDecimal abs()
public BigDecimal abs(MathContext mc)
mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal negate()
public BigDecimal negate(MathContext mc)
mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우public BigDecimal plus()
이 BigDecimal 를 단지 돌려줄 뿐(만큼)의 이 메소드는, 단항 마이너스 메소드 negate()
의 대칭으로서 포함되어 있습니다.
negate()
public BigDecimal plus(MathContext mc)
이 메소드의 효과는,round(MathContext)
메소드의 효과와 같습니다.
mc
- 사용하는 문맥
ArithmeticException
- 결과가 정확하지 않고,
둥근 모드가 UNNECESSARY 의 경우round(MathContext)
public int signum()
public int scale()
public int precision()
0 의 정밀도는 1 입니다.
public BigInteger unscaledValue()
public BigDecimal round(MathContext mc)
이 메소드의 결과는,plus(MathContext)
메소드의 결과와 같습니다.
mc
- 사용하는 문맥
ArithmeticException
- 둥근 모드가
UNNECESSARY 로,
BigDecimal 연산에 둥근이 필요한 경우plus(MathContext)
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
newScale
- 반환되는 BigDecimal 의 값의 스케일roundingMode
- 적용하는 둥근 모드
ArithmeticException
- roundingMode==UNNECESSARY 이며,
지정한 스케일 연산으로 둥근이
필요한 경우RoundingMode
public BigDecimal setScale(int newScale, int roundingMode)
BigDecimal 객체는 불변이기 (위해)때문에,setX 메소드로 필드 X 를 변경하는 일반적으로의 규칙과는 달라, 이 메소드를 호출해도 원의 객체는 변경되지 않는 것에 주의해 주세요. 대신에,setScale 는 적절한 스케일을 가지는 객체를 돌려줍니다. 반환된 객체는, 새롭게 할당할 수 있는 경우와 그렇지 않은 경우가 있습니다.
이 유산 메소드보다, 새로운 setScale(int, RoundingMode)
메소드를 사용해 주세요.
newScale
- 반환되는 BigDecimal 의 값의 스케일roundingMode
- 적용하는 둥근 모드
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 의 존재가 보증됩니다. 값을 변경하는 일 없이 재슬캘링을 실시하는데 충분한 0 이 BigDecimal의 소수부 (그 정수치에 있어서의 10 의 인수)의 마지막에 있는 것을 호출측이 인식하고 있는 경우, 이 호출은 스케일의 축소에도 사용할 수 있습니다.
이 메소드는 setScale 의 2 개의 인수를 사용하는 버젼과 같은 결과를 돌려줍니다만, 둥근을 지정할 필요가 없는 경우에, 호출측은 지정하는 수고를 생략할 수가 있습니다.
BigDecimal 객체는 불변이기 (위해)때문에,setX 메소드로 필드 X 를 변경하는 일반적으로의 규칙과는 대조적으로, 이 메소드를 호출해도 원의 객체는 변경되지 않는 것에 주의해 주세요. 대신에,setScale 는 적절한 스케일을 가지는 객체를 돌려줍니다. 반환된 객체는, 새롭게 할당할 수 있는 경우와 그렇지 않은 경우가 있습니다.
newScale
- 반환되는 BigDecimal 의 값의 스케일
ArithmeticException
- 지정한 스케일 연산으로
둥근이 필요한 경우setScale(int, int)
,
setScale(int, RoundingMode)
public BigDecimal movePointLeft(int n)
n
- 소수점을 왼쪽에 이동하는 자리수
ArithmeticException
- 스케일이 오버플로우 하는 경우public BigDecimal movePointRight(int n)
n
- 소수점을 오른쪽에 이동하는 자리수
ArithmeticException
- 스케일이 오버플로우 하는 경우public BigDecimal scaleByPowerOfTen(int n)
ArithmeticException
- 스케일이
32 비트 정수의 범위외인 경우public BigDecimal stripTrailingZeros()
public int compareTo(BigDecimal val)
Comparable <BigDecimal >
내의 compareTo
val
- 이 BigDecimal 와 비교한다
BigDecimal
public boolean equals(Object x)
compareTo
와 달라, 이 메소드는, 2 개의 BigDecimal 객체가 값도 스케일도 같은 경우에만 동일하다고 봅니다 (따라, 이 메소드에서는 2.0 으로 2.00 은 동일하지 않다).
Object
내의 equals
x
- 이 BigDecimal 와 비교한다
Object
compareTo(java.math.BigDecimal)
,
hashCode()
public BigDecimal min(BigDecimal val)
val
- 최소치의 계산에 사용하는 값
compareTo
메소드로
정의되고 있는 비교 방법으로 값이 동일한 경우는,
this 가 반환되는compareTo(java.math.BigDecimal)
public BigDecimal max(BigDecimal val)
val
- 최대치의 계산에 사용하는 값
compareTo
메소드로
정의되고 있는 비교 방법으로 값이 동일한 경우는,
this 가 반환되는compareTo(java.math.BigDecimal)
public int hashCode()
Object
내의 hashCode
equals(Object)
public String toString()
BigDecimal 의 표준적인 캐릭터 라인 형식은, 다음의 순서로 작성됩니다. 우선,BigDecimal 의 스케일 없음의 값의 절대치가, 「0」으로부터 「9」까지의 문자를 사용한, 선두에 0 이 붙지 않는 캐릭터 라인 (기수 10)에 변환됩니다 (다만, 값이 0 인 경우는, 단일의 문자 「0」이 사용된다).
다음에, 「조정된 지수」가 계산됩니다. 이것은, 정부를 반대로 한 스케일에 변환된 스케일 없음의 값의 문자수를 가산한 것으로부터 1 을 감산한 것입니다. 즉,-scale+(ulength-1) 이며,ulength 는 10 진수의 스케일 없음의 값의 절대치의 길이 ( 「정밀도」)입니다.
스케일이 0 이상으로, 조정된 지수가 -6 이상인 경우, 수치는 지수 표현 없음의 문자 형식에 변환됩니다. 이 경우, 스케일이 0 때는 소수점은 추가되지 않습니다. 스케일이 정 때는, 소수점이 스케일과 함께 삽입되어 소수점 이하의 문자수가 지정됩니다. 필요에 따라서, 변환된 스케일 없음의 값의 왼쪽으로 문자 「0」이 추가됩니다. 이 삽입의 후에 소수점에 선행하는 문자가 없는 경우, 관례에 따라 문자 「0」을 선두에 붙일 수 있습니다.
그 외의 경우 (즉, 스케일이 부, 또는 조정된 지수가 -6 미만의 경우), 수치는 지수 표현을 사용해 문자 형식에 변환됩니다. 이 경우, 변환된 BigInteger 에 복수의 자리수가 있을 때, 최초의 자리수의 뒤로 소수점이 삽입됩니다. 다음에, 변환된 스케일 없음의 값의 뒤로, (삽입된 소수점과 함께) 문자 형식의 지수를 붙일 수 있습니다. 이것은, 문자 「E」, 및 그 직후의 조정된 지수를 문자 형식으로 변환한 것으로 구성됩니다. 후자는 기수 10 으로, 선두에 0 이 붙지 않고, 「0」~ 「9」를 사용해, 조정된 지수가 부의 경우는 반드시 선두에 부호 문자 「-」( 「\u002D」), 그렇지 않은 경우는 「+」( 「\u002B」)이 붙어 있습니다.
마지막으로, 스케일 없음의 값이 0 미만의 경우는, 캐릭터 라인 전체의 선두에 마이너스 부호 문자 「-」( 「\u002D」)이 붙일 수 있습니다. 스케일 없음의 값이 0 또는 정의 경우, 부호 문자는 붙일 수 없습니다.
례:
각 표현의 좌측은 [unscaled value, scale], 우측은 결과의 캐릭터 라인을 나타냅니다.
[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(String)
생성자 을 사용해 그 캐릭터 라인 표현을 BigDecimal 에 되돌리면(자), 원의 값이 복원된다
NumberFormat
클래스와 그 서브 클래스에 의해 처리된다
toEngineeringString()
메소드를,BigDecimal 의 둥근에는 소수점 이하의 자리수가 기존인 setScale
메소드를, 각각 사용할 수 있다
Object
내의 toString
Character.forDigit(int, int)
,
BigDecimal(java.lang.String)
public String toEngineeringString()
toString()
메소드로 기술되고 있도록(듯이),BigDecimal 를 나타내는 캐릭터 라인을 돌려줍니다. 다만, 지수 표현이 사용되는 경우, 0 이 아닌 값의 정수부가 1 ~ 999 의 범위에 들어가도록(듯이), 10 의 누승은 3 의 배수 (기술 표기법)에 조정됩니다. 값 0 에 대해 지수 표현이 사용되는 경우, 값 0 의 스케일을 유지하기 위해서 소수점과 1 개 또는 2 개의 소수부의 자리수가 사용됩니다. toString()
의 출력과 달라, 이 메소드의 출력으로는,캐릭터 라인 생성자 을 사용해 출력 캐릭터 라인을 BigDecimal 에 되돌렸을 때에,BigDecimal 의 같은 [integer, scale] 페어의 복원은 보증되지 않는 것에 주의해 주세요. 이 메소드의 결과는, 캐릭터 라인 생성자 을 메소드의 출력에 적용한 결과와 등가인 수치를 항상 생성한다고 하는 약한 제약을 채웁니다.
public String toPlainString()
toString()
,
toEngineeringString()
public BigInteger toBigInteger()
변환이 정확하지 않은 (즉, 0 이외의 소수부가 파기된다) 경우에 예외를 throw 하려면 ,toBigIntegerExact()
메소드를 사용해 주세요.
public BigInteger toBigIntegerExact()
ArithmeticException
- this 가 0 이외의
소수부를 가지는 경우public long longValue()
Number
내의 longValue
public long longValueExact()
ArithmeticException
- this 가 0 이외의
소수부를 가진다, 또는 long 내에 들어가지 않는 경우public int intValue()
Number
내의 intValue
public int intValueExact()
ArithmeticException
- this 가 0 이외의
소수부를 가진다, 또는 int 내에 들어가지 않는 경우public short shortValueExact()
ArithmeticException
- this 가 0 이외의
소수부를 가진다, 또는 short 내에 들어가지 않는 경우public byte byteValueExact()
ArithmeticException
- this 가 0 이외의
소수부를 가진다, 또는 byte 내에 들어가지 않는 경우public float floatValue()
Float.NEGATIVE_INFINITY
또는 Float.POSITIVE_INFINITY
에 변환됩니다. 반환값이 유한한 경우도, 이 변환에 의해,BigDecimal 치의 정밀도에 관한 정보가 없어질 가능성이 있습니다.
Number
내의 floatValue
public double doubleValue()
Double.NEGATIVE_INFINITY
또는 Double.POSITIVE_INFINITY
에 변환됩니다. 반환값이 유한한 경우도, 이 변환에 의해,BigDecimal 치의 정밀도에 관한 정보가 없어질 가능성이 있습니다.
Number
내의 doubleValue
public BigDecimal ulp()
this
와 같은 스케일로 포함되어 0 및 0 이외의 값의 결과는 [1, this.scale()]
와 동일해집니다.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.