JavaTM Platform
Standard Ed. 6

java.math
클래스 BigDecimal

java.lang.Object 
  상위를 확장 java.lang.Number 
      상위를 확장 java.math.BigDecimal
모든 구현된 인터페이스:
Serializable , Comparable <BigDecimal >


public class BigDecimal
extends Number
implements Comparable <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 를 우선하는 방법으로 해결됩니다.

같은 수치에서도 표현이 다를 (스케일이 다를) 가능성이 있기 (위해)때문에, 산술 및 둥근 규칙은, 수치적인 결과와 결과의 표현에 사용하는 스케일의 양쪽 모두를 지정할 필요가 있습니다.

일반적으로, 정확한 결과에 반환되는 자리수보다 대부분 (제산의 경우는 무한대도)의 자리수가 있는 경우, 둥근 모드와 정밀도 설정에 의해, 연산이 돌려주는 결과의 자리수가 정해집니다. 우선, 반환되는 자리수의 합계수는 MathContextprecision 설정으로 지정됩니다. 이것에 의해, 결과의 「정밀도」가 결정됩니다. 자리수의 카운트는, 정확한 결과의 가장 왼쪽의 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()
이러한 스케일은, 정확한 산술 결과를 돌려주는 메소드 에 의해서만 사용됩니다. 다만, 정확한 제산에서는, 정확한 결과의 자리수가 많을 가능성이 있기 (위해)때문에, 보다 큰 스케일을 사용할 필요가 있는 경우가 있습니다. 예를 들어,1/320.03125 입니다.

둥근 전은, 논리적으로 정확한 중간 결과의 스케일이 그 연산의 우선 스케일입니다. 정확한 수치 결과를 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 종류가 있습니다. 슬캘링/둥근 연산 (setScaleround )은, 값이 오퍼랜드의 값과 거의 (또는 정확히) 동일하지만 스케일 또는 정밀도는 지정된 값인 BigDecimal 를 돌려줍니다. 이 연산에서는, 값에 대해서 최소한의 영향으로, 포함되는 수치의 정밀도가 상하합니다. 소수점 이동 연산 (movePointLeftmovePointRight )은, 지정한 방향으로 지정한 자리수만 소수점을 이동하는 것으로써 오퍼랜드로부터 작성되는 BigDecimal 를 돌려줍니다.

설명을 알기 쉽고 간결하게 하기 위해서,BigDecimal 메소드의 설명에서는 전체를 통해 의사 코드를 사용합니다. 의사 코드식 (i + j) 은, 「값이 BigDecimal i 의 값과 BigDecimal j 의 값의 화인 BigDecimal」를 나타냅니다. 의사 코드식 (i == j) 은, 「BigDecimal iBigDecimal 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)
          BigIntegerBigDecimal 로 변환합니다.
BigDecimal (BigInteger  unscaledVal, int scale)
          BigInteger 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다.
BigDecimal (BigInteger  unscaledVal, int scale, MathContext  mc)
          문맥 설정에 따른 둥근을 사용해,BigInteger 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다.
BigDecimal (BigInteger  val, MathContext  mc)
          문맥 설정에 따른 둥근을 사용해,BigIntegerBigDecimal 로 변환합니다.
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)
          doubledouble 의 바이너리 부동 소수점치의 정확한 10 진수 표현인 BigDecimal 로 변환합니다.
BigDecimal (double val, MathContext  mc)
          문맥 설정에 따른 둥근을 사용해,doubleBigDecimal 로 변환합니다.
BigDecimal (int val)
          intBigDecimal 로 변환합니다.
BigDecimal (int val, MathContext  mc)
          문맥 설정에 따른 둥근을 사용해,intBigDecimal 로 변환합니다.
BigDecimal (long val)
          longBigDecimal 로 변환합니다.
BigDecimal (long val, MathContext  mc)
          문맥 설정에 따른 둥근을 사용해,longBigDecimal 로 변환합니다.
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 ()
          이 BigDecimalbyte 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다.
 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 ()
          이 BigDecimaldouble 로 변환합니다.
 boolean equals (Object  x)
          이 BigDecimal 와 지정된 Object 가 동일한지 어떤지를 비교합니다.
 float floatValue ()
          이 BigDecimalfloat 로 변환합니다.
 int hashCode ()
          이 BigDecimal 의 해시 코드를 돌려줍니다.
 int intValue ()
          이 BigDecimalint 로 변환합니다.
 int intValueExact ()
          이 BigDecimalint 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다.
 long longValue ()
          이 BigDecimallong 로 변환합니다.
 long longValueExact ()
          이 BigDecimallong 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다.
 BigDecimal max (BigDecimal  val)
          이 BigDecimalval 의 최대치를 돌려줍니다.
 BigDecimal min (BigDecimal  val)
          이 BigDecimalval 의 최소치를 돌려줍니다.
 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 ()
          이 BigDecimalshort 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다.
 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 ()
          이 BigDecimalBigInteger 로 변환합니다.
 BigInteger toBigIntegerExact ()
          이 BigDecimalBigInteger 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다.
 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 의 표준적인 캐릭터 라인 표현을 사용해,doubleBigDecimal 로 변환합니다.
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
 

필드의 상세

ZERO

public static final BigDecimal  ZERO
스케일 0 의 값 0 입니다.

도입된 버젼:
1.5

ONE

public static final BigDecimal  ONE
스케일 0 의 값 1 입니다.

도입된 버젼:
1.5

TEN

public static final BigDecimal  TEN
스케일 0 의 값 10 입니다.

도입된 버젼:
1.5

ROUND_UP

public static final int ROUND_UP
0 으로부터 멀어지도록(듯이) 마는 모드입니다. 파기되는 0 이외의 소수부에 선행하는 자리수를 항상 늘립니다. 이 둥근 모드는, 계산된 값의 절대치를 줄이지 않습니다.

관련 항목:
정수 필드치

ROUND_DOWN

public static final int ROUND_DOWN
0 에 가까워지도록(듯이) 마는 모드입니다. 파기되는 소수부에 선행하는 자리수를 증분 하지 않습니다 (즉 잘라서 버림). 이 둥근 모드는, 계산된 값의 절대치를 늘리지 않습니다.

관련 항목:
정수 필드치

ROUND_CEILING

public static final int ROUND_CEILING
정의 무한대에 가까워지도록(듯이) 마는 모드입니다. BigDecimal 가 정의 경우는 ROUND_UP 와 같이 동작해, 부의 경우는 ROUND_DOWN 와 같이 동작합니다. 이 둥근 모드는, 계산된 값을 줄이지 않습니다.

관련 항목:
정수 필드치

ROUND_FLOOR

public static final int ROUND_FLOOR
부의 무한대에 가까워지도록(듯이) 마는 모드입니다. BigDecimal 이 정의 경우는 ROUND_DOWN 와 같이 동작해, 부의 경우는 ROUND_UP 와 같이 동작합니다. 이 둥근 모드는, 계산된 값을 늘리지 않습니다.

관련 항목:
정수 필드치

ROUND_HALF_UP

public static final int ROUND_HALF_UP
「가장 가까운 숫자」에 마는 모드입니다. 다만, 양쪽이웃의 숫자가 등거리의 경우는 끝맺습니다. 파기되는 소수부가 0.5 이상의 경우는 ROUND_UP 와 같이 동작해, 그 이외의 경우는 ROUND_DOWN 와 같이 동작합니다. 이것은 우리의 대부분이 초등학교에서 배운 둥근 모드입니다.

관련 항목:
정수 필드치

ROUND_HALF_DOWN

public static final int ROUND_HALF_DOWN
「가장 가까운 숫자」에 마는 모드입니다. 다만, 양쪽이웃의 숫자가 등거리의 경우는 잘라 버립니다. 파기되는 소수부가 0.5 를 넘는 경우는 ROUND_UP 와 같이 동작해, 그 이외의 경우는 ROUND_DOWN 와 같이 동작합니다.

관련 항목:
정수 필드치

ROUND_HALF_EVEN

public static final int ROUND_HALF_EVEN
「가장 가까운 숫자」에 마는 둥근 모드입니다. 다만, 양쪽이웃의 숫자가 등거리의 경우는 짝수 측에 맙니다. 파기하는 소수부의 좌변의 자리수가 홀수의 경우는 ROUND_HALF_UP 와 같이 동작해, 짝수의 경우는 ROUND_HALF_DOWN 와 같이 동작합니다. 이 둥근 모드는, 연속하는 계산으로 반복해 적용되는 경우에 누적 에러를 최소한으로 합니다.

관련 항목:
정수 필드치

ROUND_UNNECESSARY

public static final int ROUND_UNNECESSARY
요구되는 연산의 결과가 정확하고, 둥근이 필요하지 않은 것을 나타내는 둥근 모드입니다. 이 둥근 모드가 결과가 정확하지 않은 연산으로 지정되는 경우는,ArithmeticException 가 throw 됩니다.

관련 항목:
정수 필드치
생성자 의 상세

BigDecimal

public BigDecimal(char[] in,
                  int offset,
                  int len)
BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받아, 부분 배열의 지정을 가능하게 합니다.

문자 순서가 문자 배열내에서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해,BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.

파라미터:
in - 문자의 소스인 char 배열
offset - 조사하는 배열의 최초의 문자
len - 검토하는 문자수
예외:
NumberFormatException - inBigDecimal 의 유효한 표현이 아닌 경우, 또는 정의된 부분 배열이 완전하게 in 내에 없는 경우
도입된 버젼:
1.5

BigDecimal

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 - inBigDecimal 의 유효한 표현이 아닌 경우, 또는 정의된 부분 배열이 완전하게 in 내에 없는 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(char[] in)
BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받습니다.

문자 순서가 문자 배열로서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해 BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.

파라미터:
in - 문자의 소스인 char 배열
예외:
NumberFormatException - inBigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(char[] in,
                  MathContext  mc)
BigDecimal 의 문자 배열 표현을 BigDecimal 로 변환해, 문맥 설정에 따른 둥근을 사용해, 같은 문자 순서를 BigDecimal(String) 생성자 으로서 받습니다.

문자 순서가 문자 배열로서 벌써 사용 가능한 경우,char 배열을 캐릭터 라인으로 변환해 BigDecimal(String) 생성자 을 사용하는 것보다도, 이 생성자 을 사용한 (분)편이 고속으로.

파라미터:
in - 문자의 소스인 char 배열
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
NumberFormatException - inBigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(String  val)
BigDecimal의 캐릭터 라인 표현을 BigDecimal 로 변환합니다. 캐릭터 라인 표현은, 임의의 부호 「+」( 「\u002B」) 또는 「-」( 「\u002D」)과 거기에 계속되는 0 자리수 이상의 10 진수자 ( 「정수부」)의 열로 구성되어 임의로 소수부 또는 지수가 부수 합니다.

소수부는, 소수점과 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]
 

주:floatdouble 의 NaN, 및 ±Infinity 이외의 값으로는, 이 생성자 은 Float.toString(float)Double.toString(double) 로 반환되는 값과 호환성이 있습니다. 이 방법에서는,BigDecimal(double) 생성자 으로 예측을 할 수 없는 것에 밤영향을 받지 않기 때문에,float 또는 double 를 BigDecimal 로 변환하는 바람직한 방법입니다.

파라미터:
val - BigDecimal 의 캐릭터 라인 표현
예외:
NumberFormatException - valBigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우

BigDecimal

public BigDecimal(String  val,
                  MathContext  mc)
BigDecimal 의 캐릭터 라인 표현을 BigDecimal 로 변환해, 문맥 설정에 따른 둥근을 사용해, 같은 캐릭터 라인을 BigDecimal(String) 생성자 으로서 받습니다.

파라미터:
val - BigDecimal 의 캐릭터 라인 표현
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
NumberFormatException - val 가 BigDecimal 의 유효한 캐릭터 라인 표현이 아닌 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(double val)
doubledouble 의 바이너리 부동 소수점치의 정확한 10 진수 표현인 BigDecimal 로 변환합니다. 반환된 BigDecimal 의 스케일은,(10scale × val) 가 정수가 되는 것 같은 최소치입니다.

주:

  1. 이 생성자 의 결과는 예상외일 가능성이 있다. Java 로 new BigDecimal(0.1) 라고 기술하면(자), 0.1 으로 정확하게 동일한 BigDecimal (스케일 1 의, 스케일 없음의 값 1)가 작성된다고 생각할지도 모르지만, 실제로는 0.1000000000000000055511151231257827021181583404541015625 로 동일해진다. 이것은, 0.1 을 double (또는 어떤 유한장 2 진소수에서도)로서 정확하게 표현할 수 없기 때문이다. 따라서, 생성자 에게 건네지는 값은 정확하게 0.1 으로 동일한 것은 아니다
  2. 한편,String 생성자 은 완전하게 예측 가능하다. new BigDecimal("0.1") 라고 기술하면(자), 「정확하게」 0.1 으로 동일한 BigDecimal 가 작성된다. 그 때문에, 일반적으로은, 이것 대신에 String 생성자 을 사용하는 것이 추천 되고 있다
  3. BigDecimal 의 소스로서 double 를 사용할 필요가 있는 경우, 이 생성자 은 정확한 변환을 실시하는 것에 주의할 필요가 있다. 이 생성자 에서는,Double.toString(double) 메소드와 BigDecimal(String) 생성자 을 사용해 doubleString 로 변환했을 때와 같은 결과는 되지 않는다. 같은 결과를 얻으려면 ,static valueOf(double) 메소드를 사용한다

파라미터:
val - BigDecimal 로 변환한다 double
예외:
NumberFormatException - val 가 무한한가 NaN 인 경우

BigDecimal

public BigDecimal(double val,
                  MathContext  mc)
문맥 설정에 따른 둥근을 사용해,doubleBigDecimal 로 변환합니다. BigDecimal 의 스케일은,(10scale × val) 가 정수인 것 같은 최소치입니다.

이 생성자 의 결과는 예상외일 가능성이 있기 (위해)때문에, 일반적으로 사용은 추천하지 않습니다. BigDecimal(double) 생성자 의 주를 참조해 주세요.

파라미터:
val - BigDecimal 로 변환한다 double
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, RoundingMode 가 UNNECESSARY 의 경우
NumberFormatException - val 가 무한한가 NaN 인 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(BigInteger  val)
BigIntegerBigDecimal 로 변환합니다. BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환한다 BigInteger

BigDecimal

public BigDecimal(BigInteger  val,
                  MathContext  mc)
문맥 설정에 따른 둥근을 사용해,BigIntegerBigDecimal 로 변환합니다. BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환한다 BigInteger
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(BigInteger  unscaledVal,
                  int scale)
BigInteger 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다. BigDecimal의 값은 (unscaledVal × 10-scale) 입니다.

파라미터:
unscaledVal - BigDecimal 의 스케일 없음의 값
scale - BigDecimal 의 스케일

BigDecimal

public BigDecimal(BigInteger  unscaledVal,
                  int scale,
                  MathContext  mc)
문맥 설정에 따른 둥근을 사용해,BigInteger 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다. BigDecimal의 값은 (unscaledVal × 10-scale) 이어,precision 와 둥근 모드 설정에 따라 말 수 있습니다.

파라미터:
unscaledVal - BigDecimal 의 스케일 없음의 값
scale - BigDecimal 의 스케일
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(int val)
intBigDecimal 로 변환합니다. BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환한다 int
도입된 버젼:
1.5

BigDecimal

public BigDecimal(int val,
                  MathContext  mc)
문맥 설정에 따른 둥근을 사용해,intBigDecimal 로 변환합니다. 둥근을 실시하기 전의 BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환하는 int
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

BigDecimal

public BigDecimal(long val)
longBigDecimal 로 변환합니다. BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환하는 long
도입된 버젼:
1.5

BigDecimal

public BigDecimal(long val,
                  MathContext  mc)
문맥 설정에 따른 둥근을 사용해,longBigDecimal 로 변환합니다. 둥근을 실시하기 전의 BigDecimal 의 스케일은 0 입니다.

파라미터:
val - BigDecimal 로 변환하는 long
mc - 사용하는 문맥
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5
메소드의 상세

valueOf

public static BigDecimal  valueOf(long unscaledVal,
                                 int scale)
long 의 스케일 없음의 값과 int 의 스케일을 BigDecimal 로 변환합니다. 이 「static 팩토리 메소드」는, 자주(잘) 사용되는 BigDecimal 치의 재사용을 가능하게 하기 위한(해), (long, int) 생성자 보다 우선해 제공됩니다.

파라미터:
unscaledVal - BigDecimal 의 스케일 없음의 값
scale - BigDecimal 의 스케일
반환값:
치가(unscaledVal × 10-scale)BigDecimal

valueOf

public static BigDecimal  valueOf(long val)
long 치를 스케일이 0 의 BigDecimal 로 변환합니다. 이 「static 팩토리 메소드」는, 자주(잘) 사용되는 BigDecimal 의 재사용을 가능하게 하기 위한(해), (long) 생성자 보다 우선해 제공됩니다.

파라미터:
val - BigDecimal 의 값
반환값:
치가 valBigDecimal

valueOf

public static BigDecimal  valueOf(double val)
Double.toString(double) 메소드로 제공되는double 의 표준적인 캐릭터 라인 표현을 사용해,doubleBigDecimal 로 변환합니다.

주: 이것은,double (또는 float)를 BigDecimal 로 변환하기 위한 추천 되는 방법입니다. 반환되는 값은,Double.toString(double) 를 사용했을 경우의 결과로부터 BigDecimal 를 구축한 결과와 동일하기 때문입니다.

파라미터:
val - BigDecimal 로 변환하는 double
반환값:
치가 val 와 동일한, 또는 대충 같다 BigDecimal
예외:
NumberFormatException - val 가 무한한가 NaN 인 경우
도입된 버젼:
1.5

add

public BigDecimal  add(BigDecimal  augend)
값이 (this + augend) 로 스케일이 max(this.scale(), augend.scale())BigDecimal 를 돌려줍니다.

파라미터:
augend - 이 BigDecimal 에 가산하는 값
반환값:
this + augend

add

public BigDecimal  add(BigDecimal  augend,
                      MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this + augend)BigDecimal 를 돌려줍니다. 어느 쪽인가의 수치가 0 으로 정밀도 설정이 0 이외인 경우, 필요에 따라서 말 수 있던 것 외의 수치가 결과적으로 사용됩니다.

파라미터:
augend - 이 BigDecimal 에 가산하는 값
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this + augend
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

subtract

public BigDecimal  subtract(BigDecimal  subtrahend)
값이 (this - subtrahend) 로 스케일이 max(this.scale(), subtrahend.scale())BigDecimal 를 돌려줍니다.

파라미터:
subtrahend - 이 BigDecimal 로부터 감산하는 값
반환값:
this - subtrahend

subtract

public BigDecimal  subtract(BigDecimal  subtrahend,
                           MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this - subtrahend)BigDecimal 를 돌려줍니다. subtrahend 가 0 인 경우, 필요에 따라서 말 수 있었던 this 의 값이 결과적으로 사용됩니다. this 가 0 인 경우, 결과는 subtrahend.negate(mc) 입니다.

파라미터:
subtrahend - 이 BigDecimal 로부터 감산하는 값
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this - subtrahend
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

multiply

public BigDecimal  multiply(BigDecimal  multiplicand)
값이 (this × multiplicand) 로 스케일이 (this.scale() + multiplicand.scale())BigDecimal 를 돌려줍니다.

파라미터:
multiplicand - 이 BigDecimal 로 곱셈하는 값
반환값:
this * multiplicand

multiply

public BigDecimal  multiply(BigDecimal  multiplicand,
                           MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this × multiplicand)BigDecimal 를 돌려줍니다.

파라미터:
multiplicand - 이 BigDecimal 로 곱셈하는 값
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this * multiplicand
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

divide

public BigDecimal  divide(BigDecimal  divisor,
                         int scale,
                         int roundingMode)
값이 (this / divisor) 로, 스케일이 지정된 것인 BigDecimal 를 돌려줍니다. 둥근을 실시해, 지정한 스케일로 결과를 생성할 필요가 있는 경우는, 지정한 둥근 모드가 적용됩니다.

이 유산 메소드보다, 새로운 divide(BigDecimal, int, RoundingMode) 메소드를 사용해 주세요.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
scale - 반환되는 BigDecimal 의 상의 스케일
roundingMode - 적용하는 둥근 모드
반환값:
this / divisor
예외:
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

divide

public BigDecimal  divide(BigDecimal  divisor,
                         int scale,
                         RoundingMode  roundingMode)
값이 (this / divisor) 로, 스케일이 지정된 것인 BigDecimal 를 돌려줍니다. 둥근을 실시해, 지정한 스케일로 결과를 생성할 필요가 있는 경우는, 지정한 둥근 모드가 적용됩니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
scale - 반환되는 BigDecimal 의 상의 스케일
roundingMode - 적용하는 둥근 모드
반환값:
this / divisor
예외:
ArithmeticException - divisor 가 0 으로, roundingMode==RoundingMode.UNNECESSARY 이며, 지정한 스케일이 제산의 결과를 정확하게 나타내려면 충분하지 않은 경우
도입된 버젼:
1.5

divide

public BigDecimal  divide(BigDecimal  divisor,
                         int roundingMode)
값이 (this / divisor) 로 스케일이 this.scale()BigDecimal 를 돌려줍니다. 둥근을 실시해, 특정의 스케일로 결과를 생성할 필요가 있는 경우는, 지정된 둥근 모드가 적용됩니다.

이 유산 메소드보다, 새로운 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

divide

public BigDecimal  divide(BigDecimal  divisor,
                         RoundingMode  roundingMode)
값이 (this / divisor) 로 스케일이 this.scale()BigDecimal 를 돌려줍니다. 둥근을 실시해, 특정의 스케일로 결과를 생성할 필요가 있는 경우는, 지정된 둥근 모드가 적용됩니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
roundingMode - 적용하는 둥근 모드
반환값:
this / divisor
예외:
ArithmeticException - divisor==0 인 경우, 또는 roundingMode==RoundingMode.UNNECESSARY 이며, this.scale() 가 제산의 결과를 정확하게 나타내려면 충분하지 않은 경우
도입된 버젼:
1.5

divide

public BigDecimal  divide(BigDecimal  divisor)
값이 (this / divisor) 로 우선 스케일이 (this.scale() - divisor.scale())BigDecimal 를 돌려줍니다. (소수점 이하가 무한이 되기 (위해)때문에) 정확한 상을 표현할 수 없는 경우,ArithmeticException 가 throw 됩니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
반환값:
this / divisor
예외:
ArithmeticException - 정확한 상의 소수점 이하가 무한한 경우
도입된 버젼:
1.5

divide

public BigDecimal  divide(BigDecimal  divisor,
                         MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this / divisor)BigDecimal 를 돌려줍니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this / divisor
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 또는 mc.precision == 0 또한 상의 소수점 이하가 무한한 경우
도입된 버젼:
1.5

divideToIntegralValue

public BigDecimal  divideToIntegralValue(BigDecimal  divisor)
값을 말 수 있었던 상 (this / divisor) 의 정수부인 BigDecimal 를 돌려줍니다. 결과의 우선 스케일은,(this.scale() - divisor.scale()) 입니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
반환값:
this / divisor 의 정수부
예외:
ArithmeticException - divisor==0 인 경우
도입된 버젼:
1.5

divideToIntegralValue

public BigDecimal  divideToIntegralValue(BigDecimal  divisor,
                                        MathContext  mc)
값이 (this / divisor) 의 정수부인 BigDecimal 를 돌려줍니다. 정확한 상의 정수부는 둥근 모드에 의존하지 않기 때문에, 둥근 모드는 이 메소드에 의해 반환되는 값에 영향을 미치지 않습니다. 결과의 우선 스케일은,(this.scale() - divisor.scale()) 입니다. 정확한 상의 정수부에 mc.precision 보다 많은 자리수가 필요한 경우,ArithmeticException 가 throw 됩니다.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
mc - 사용하는 문맥
반환값:
this / divisor 의 정수부
예외:
ArithmeticException - divisor==0 인 경우
ArithmeticException - mc.precision 가 0 보다 크고, 결과에 mc.precision 보다 자리수가 많은 정밀도가 필요한 경우
도입된 버젼:
1.5

remainder

public BigDecimal  remainder(BigDecimal  divisor)
값이 (this % divisor)BigDecimal 를 돌려줍니다.

잉여는 this.subtract(this.divideToIntegralValue(divisor). multiply(divisor)) 에 의해 제공됩니다. 이것은 모듈로 연산은 아닌 (부의 결과가 가능)인 것에 유의해 주세요.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
반환값:
this % divisor
예외:
ArithmeticException - divisor==0 인 경우
도입된 버젼:
1.5

remainder

public BigDecimal  remainder(BigDecimal  divisor,
                            MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (this % divisor)BigDecimal 를 돌려줍니다. MathContext 설정은, 잉여의 계산에 사용하는 암묵적인 제산에 영향을 미칩니다. 정의가 가리키는 대로, 잉여의 계산 자체는 정확합니다. 그 때문에, 잉여는 mc.getPrecision() 보다 많은 자리수를 포함할 가능성이 있습니다.

잉여는 this.subtract(this.divideToIntegralValue(divisor). multiply(divisor)) 에 의해 제공됩니다. 이것은 모듈로 연산은 아닌 (부의 결과가 가능)인 것에 유의해 주세요.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this % divisor
예외:
ArithmeticException - divisor==0 인 경우
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우, 또는 mc.precision 가 0 보다 크고,this.divideToIntgralValue(divisor) 의 결과에 mc.precision 보다 자리수가 많은 정밀도가 필요한 경우
도입된 버젼:
1.5
관련 항목:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)

divideAndRemainder

public BigDecimal [] divideAndRemainder(BigDecimal  divisor)
divideToIntegralValue 의 결과와 거기에 계속되는 2 개의 오퍼랜드의 remainder 의 결과를 포함한, 2 요소의 BigDecimal 배열을 돌려줍니다.

정수의 상과 잉여의 양쪽 모두가 필요한 경우,divideToIntegralValue 메소드와 remainder 메소드를 따로 따로 사용하는 것보다, 제산을 1 회만 실행하면 좋은 이 메소드가 고속으로 있는 것에 유의해 주세요.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값, 및 계산된 잉여
반환값:
2 요소의 BigDecimal 배열. 상 (divideToIntegralValue 의 결과)(이)가 최초의 요소로, 잉여가 마지막 요소
예외:
ArithmeticException - divisor==0 인 경우
도입된 버젼:
1.5
관련 항목:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext) , remainder(java.math.BigDecimal, java.math.MathContext)

divideAndRemainder

public BigDecimal [] divideAndRemainder(BigDecimal  divisor,
                                       MathContext  mc)
문맥 설정에 따른 둥근을 사용해 계산된 divideToIntegralValue 의 결과와 2 개의 오퍼랜드의 remainder 의 결과를 포함한, 2 요소의 BigDecimal 배열을 돌려줍니다.

정수의 상과 잉여의 양쪽 모두가 필요한 경우,divideToIntegralValue 메소드와 remainder 메소드를 따로 따로 사용하는 것보다, 제산을 1 회만 실행하면 좋은 이 메소드가 고속으로 있는 것에 유의해 주세요.

파라미터:
divisor - 이 BigDecimal 를 제산하는 값, 및 계산된 잉여
mc - 사용하는 문맥
반환값:
2 요소의 BigDecimal 배열. 상 (divideToIntegralValue 의 결과)(이)가 최초의 요소로, 잉여가 마지막 요소
예외:
ArithmeticException - divisor==0 인 경우
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우, 또는 mc.precision 가 0 보다 크고,this.divideToIntgralValue(divisor) 의 결과에 mc.precision 보다 자리수가 많은 정밀도가 필요한 경우
도입된 버젼:
1.5
관련 항목:
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext) , remainder(java.math.BigDecimal, java.math.MathContext)

pow

public BigDecimal  pow(int n)
값이 (thisn)BigDecimal 를 돌려줍니다. 누승은, 정밀도의 제한없이 정확하게 계산됩니다.

파라미터 n 는, 0 에서 999999999 의 범위에 들어가고 있을 필요가 있습니다. ZERO.pow(0)ONE 를 돌려줍니다. 장래의 릴리스에서는, 이 메소드의 지수의 허용 범위가 확장될 가능성이 있습니다.

파라미터:
n - 이 BigDecimal 의 누승
반환값:
this n
예외:
ArithmeticException - n 가 범위외에 있는 경우
도입된 버젼:
1.5

pow

public BigDecimal  pow(int n,
                      MathContext  mc)
값이 (thisn)BigDecimal 를 돌려줍니다. 현재의 구현에서는, 문맥 설정에 따른 둥근으로 ANSI 규격 X3. 274-1996 그리고 정의된 코어 알고리즘을 사용하고 있습니다. 일반적으로, 반환된 수치는, 선택된 정밀도의 정확한 수치의 2 ulp 이내입니다. 장래의 릴리스에서는, 오차의 허용 범위를 좁은, 지수의 허용 범위를 확대한 다른 알고리즘을 사용할 가능성이 있습니다.

X3. 274-1996 알고리즘은, 다음과 같습니다.

파라미터:
n - 이 BigDecimal 의 누승
mc - 사용하는 문맥
반환값:
ANSI standard X3. 274-1996 알고리즘을 사용했다 thisn
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우, 또는 n 가 범위외인 경우
도입된 버젼:
1.5

abs

public BigDecimal  abs()
값이 이 BigDecimal 의 절대치로 스케일이 this.scale()BigDecimal를 돌려줍니다.

반환값:
abs(this)

abs

public BigDecimal  abs(MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 이 BigDecimal 의 절대치인 BigDecimal 를 돌려줍니다.

파라미터:
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 abs(this)
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

negate

public BigDecimal  negate()
값이 (-this) 로 스케일이 this.scale()BigDecimal 를 돌려줍니다.

반환값:
-this

negate

public BigDecimal  negate(MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (-this)BigDecimal 를 돌려줍니다.

파라미터:
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 -this
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5

plus

public BigDecimal  plus()
값이 (+this) 로 스케일이 this.scale()BigDecimal 를 돌려줍니다.

BigDecimal 를 단지 돌려줄 뿐(만큼)의 이 메소드는, 단항 마이너스 메소드 negate() 의 대칭으로서 포함되어 있습니다.

반환값:
this
도입된 버젼:
1.5
관련 항목:
negate()

plus

public BigDecimal  plus(MathContext  mc)
문맥 설정에 따른 둥근을 사용해, 값이 (+this)BigDecimal 를 돌려줍니다.

이 메소드의 효과는,round(MathContext) 메소드의 효과와 같습니다.

파라미터:
mc - 사용하는 문맥
반환값:
필요에 따라서 말 수 있었던 this. 0 의 결과의 스케일은 0
예외:
ArithmeticException - 결과가 정확하지 않고, 둥근 모드가 UNNECESSARY 의 경우
도입된 버젼:
1.5
관련 항목:
round(MathContext)

signum

public int signum()
BigDecimal 의 부호치를 돌려줍니다.

반환값:
BigDecimal 가 부의 경우는 -1, 제로의 경우는 0, 정의 경우는 1

scale

public int scale()
BigDecimal 의 「스케일」을 돌려줍니다. 0 또는 정의 경우, 스케일은 소수점 이하의 자리수입니다. 부의 경우, 스케일 없음의 수치에, 스케일의 정부를 반대로 한 값을 지수로 하는 10 의 누승을 곱셈합니다. 예를 들어,-3 의 스케일에서는, 스케일 없음의 값에 1000 이 곱셈됩니다.

반환값:
BigDecimal 의 스케일

precision

public int precision()
BigDecimal 의 「정밀도」를 돌려줍니다. 정밀도란, 스케일 없음의 값의 자리수입니다.

0 의 정밀도는 1 입니다.

반환값:
BigDecimal 의 정밀도
도입된 버젼:
1.5

unscaledValue

public BigInteger  unscaledValue()
값이 이 BigDecimal 의 「스케일 없음의 값」인 BigInteger 를 돌려줍니다 ((this * 10this.scale()) 를 계산한다).

반환값:
BigDecimal 의 스케일 없음의 값
도입된 버젼:
1.2

round

public BigDecimal  round(MathContext  mc)
MathContext 설정에 따라 말 수 있었던 BigDecimal 를 돌려줍니다. 정밀도 설정이 0 의 경우, 둥근은 실행되지 않습니다.

이 메소드의 결과는,plus(MathContext) 메소드의 결과와 같습니다.

파라미터:
mc - 사용하는 문맥
반환값:
MathContext 설정에 따라 말 수 있었다 BigDecimal
예외:
ArithmeticException - 둥근 모드가 UNNECESSARY 로, BigDecimal 연산에 둥근이 필요한 경우
도입된 버젼:
1.5
관련 항목:
plus(MathContext)

setScale

public BigDecimal  setScale(int newScale,
                           RoundingMode  roundingMode)
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal 를 돌려줍니다. 스케일이 연산으로 줄여지는 경우, 스케일 없음의 값은 (곱셈은 아니고) 제산할 필요가 있어, 값이 바뀔 가능성이 있습니다. 이 경우, 지정한 둥근 모드가 제산에 적용됩니다.

파라미터:
newScale - 반환되는 BigDecimal 의 값의 스케일
roundingMode - 적용하는 둥근 모드
반환값:
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal
예외:
ArithmeticException - roundingMode==UNNECESSARY 이며, 지정한 스케일 연산으로 둥근이 필요한 경우
도입된 버젼:
1.5
관련 항목:
RoundingMode

setScale

public BigDecimal  setScale(int newScale,
                           int roundingMode)
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal 를 돌려줍니다. 스케일이 연산으로 줄여지는 경우, 스케일 없음의 값은 (곱셈은 아니고) 제산할 필요가 있어, 값이 바뀔 가능성이 있습니다. 이 경우, 지정한 둥근 모드가 제산에 적용됩니다.

BigDecimal 객체는 불변이기 (위해)때문에,setX 메소드로 필드 X 를 변경하는 일반적으로의 규칙과는 달라, 이 메소드를 호출해도 원의 객체는 변경되지 않는 것에 주의해 주세요. 대신에,setScale 는 적절한 스케일을 가지는 객체를 돌려줍니다. 반환된 객체는, 새롭게 할당할 수 있는 경우와 그렇지 않은 경우가 있습니다.

이 유산 메소드보다, 새로운 setScale(int, RoundingMode) 메소드를 사용해 주세요.

파라미터:
newScale - 반환되는 BigDecimal 의 값의 스케일
roundingMode - 적용하는 둥근 모드
반환값:
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 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

setScale

public BigDecimal  setScale(int newScale)
스케일이 지정된 값이며, 값이 이 BigDecimal 과 같은 수치인,BigDecimal를 돌려줍니다. 이것이 불가능한 경우,ArithmeticException 를 throw 합니다.

일반적으로, 이 호출은 스케일의 확장에 사용되어 그 경우에는 지정된 스케일과 올바른 값의 BigDecimal 의 존재가 보증됩니다. 값을 변경하는 일 없이 재슬캘링을 실시하는데 충분한 0 이 BigDecimal의 소수부 (그 정수치에 있어서의 10 의 인수)의 마지막에 있는 것을 호출측이 인식하고 있는 경우, 이 호출은 스케일의 축소에도 사용할 수 있습니다.

이 메소드는 setScale 의 2 개의 인수를 사용하는 버젼과 같은 결과를 돌려줍니다만, 둥근을 지정할 필요가 없는 경우에, 호출측은 지정하는 수고를 생략할 수가 있습니다.

BigDecimal 객체는 불변이기 (위해)때문에,setX 메소드로 필드 X 를 변경하는 일반적으로의 규칙과는 대조적으로, 이 메소드를 호출해도 원의 객체는 변경되지 않는 것에 주의해 주세요. 대신에,setScale 는 적절한 스케일을 가지는 객체를 돌려줍니다. 반환된 객체는, 새롭게 할당할 수 있는 경우와 그렇지 않은 경우가 있습니다.

파라미터:
newScale - 반환되는 BigDecimal 의 값의 스케일
반환값:
스케일이 지정된 값이며, 한편 스케일 없음의 값이, 이 BigDecimal 의 스케일 없음의 값과 총체치를 유지할 수 있는 적당한 10 의 누승의 적 또는 상에 의해 결정되는 BigDecimal
예외:
ArithmeticException - 지정한 스케일 연산으로 둥근이 필요한 경우
관련 항목:
setScale(int, int) , setScale(int, RoundingMode)

movePointLeft

public BigDecimal  movePointLeft(int n)
소수점을 n 형좌에 이동해 이것에 동일한 BigDecimal 를 돌려줍니다. n 가 부가 아닌 경우는, 스케일에 n 를 단지 가산합니다. n 가 부의 경우는,movePointRight(-n) 에 동일해집니다. 이 호출로 반환되는 BigDecimal의 값은 (this × 10-n), 스케일은 max(this.scale() +n, 0) 입니다.

파라미터:
n - 소수점을 왼쪽에 이동하는 자리수
반환값:
소수점을 n 형좌에 이동한, 이것에 동일한 BigDecimal
예외:
ArithmeticException - 스케일이 오버플로우 하는 경우

movePointRight

public BigDecimal  movePointRight(int n)
소수점을 n 형우에 이동해 이것에 동일한 BigDecimal 를 돌려줍니다. n 가 부가 아닌 경우는, 스케일로부터 n 를 단지 감산합니다. n 가 부의 경우는,movePointLeft(-n) 에 동일해집니다. 이 호출로 반환되는 BigDecimal의 값은 (this × 10n), 스케일은 max(this.scale() -n, 0) 입니다.

파라미터:
n - 소수점을 오른쪽에 이동하는 자리수
반환값:
소수점을 n 형우에 이동한, 이것에 동일한 BigDecimal
예외:
ArithmeticException - 스케일이 오버플로우 하는 경우

scaleByPowerOfTen

public BigDecimal  scaleByPowerOfTen(int n)
수치가 (this * 10n)에 동일한 BigDecimal 를 돌려줍니다. 결과의 스케일은 (this.scale() - n) 입니다.

예외:
ArithmeticException - 스케일이 32 비트 정수의 범위외인 경우
도입된 버젼:
1.5

stripTrailingZeros

public BigDecimal  stripTrailingZeros()
수치는 이것에 동일하지만, 후속의 0 이 표현으로부터 삭제된 BigDecimal 를 돌려줍니다. 예를 들어,[6000, 1] 에 동일한 [BigInteger, scale] 컴퍼넌트를 가지는 BigDecimal600.0 으로부터 후속의 0 을 없애면(자),[6, -2] 에 동일한 [BigInteger, scale] 컴퍼넌트를 가지는 6E2 가 됩니다.

반환값:
후속의 0 이 삭제된, 수치의 동일한 BigDecimal
도입된 버젼:
1.5

compareTo

public int compareTo(BigDecimal  val)
BigDecimal 과 지정된 BigDecimal를 비교합니다. 이 메소드에서는, 값은 동일하지만 스케일이 다른 2 개의 BigDecimal 객체 (예를 들어, 2.0 으로 2.00)가 동일하다고 보여집니다. 이 메소드는, 6 개의 boolean 형의 비교 연산자 (<,==, >, >=,! =, <=)의 각각 대하는 개개의 메소드 대신에 제공됩니다. 이러한 비교를 실시하려면 (x.compareTo(y) <op> 0) 라고 하는 편성을 추천합니다. 이 경우, <op> 에는 6 개의 연산자 가운데 1 개가 들어갑니다.

정의:
인터페이스 Comparable <BigDecimal > 내의 compareTo
파라미터:
val - 이 BigDecimal 와 비교한다 BigDecimal
반환값:
BigDecimal 의 수치가 val 보다 작은 경우는 -1, 동일한 경우는 0, 큰 경우는 1

equals

public boolean equals(Object  x)
BigDecimal 와 지정된 Object 가 동일한지 어떤지를 비교합니다. compareTo 와 달라, 이 메소드는, 2 개의 BigDecimal 객체가 값도 스케일도 같은 경우에만 동일하다고 봅니다 (따라, 이 메소드에서는 2.0 으로 2.00 은 동일하지 않다).

오버라이드(override):
클래스 Object 내의 equals
파라미터:
x - 이 BigDecimal 와 비교한다 Object
반환값:
지정한 Object 가 이 BigDecimal 와 값도 스케일도 동일한 BigDecimal 인 경우에게만 true
관련 항목:
compareTo(java.math.BigDecimal) , hashCode()

min

public BigDecimal  min(BigDecimal  val)
BigDecimalval 의 최소치를 돌려줍니다.

파라미터:
val - 최소치의 계산에 사용하는 값
반환값:
BigDecimalval 가운데로 작은 (분)편의 값을 가진다 BigDecimal. compareTo 메소드로 정의되고 있는 비교 방법으로 값이 동일한 경우는, this 가 반환되는
관련 항목:
compareTo(java.math.BigDecimal)

max

public BigDecimal  max(BigDecimal  val)
BigDecimalval 의 최대치를 돌려줍니다.

파라미터:
val - 최대치의 계산에 사용하는 값
반환값:
BigDecimalval 가운데로 큰 (분)편의 값을 가진다 BigDecimal. compareTo 메소드로 정의되고 있는 비교 방법으로 값이 동일한 경우는, this 가 반환되는
관련 항목:
compareTo(java.math.BigDecimal)

hashCode

public int hashCode()
BigDecimal 의 해시 코드를 돌려줍니다. 값이 동일하지만 스케일이 다른 2 개의 BigDecimal 객체 (예를 들어, 2.0 으로 2.00)는, 일반적으로은 해시 코드가 다릅니다.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
BigDecimal 의 해시 코드
관련 항목:
equals(Object)

toString

public String  toString()
지수가 필요한 경우, 과학 표기법으로, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다.

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"
 
주:
  1. 구별 가능한 BigDecimal 치와 이 변환의 결과의 사이에는, 1 대 1 의 매핑이 있다. 즉, 모든 구별 가능한 BigDecimal 치 (스케일 없음의 값과 스케일)는,toString 를 사용한 결과적으로, 일의의 캐릭터 라인 표현을 가진다. BigDecimal(String) 생성자 을 사용해 그 캐릭터 라인 표현을 BigDecimal 에 되돌리면(자), 원의 값이 복원된다
  2. 특정의 수치를 위해서(때문에) 생성된 캐릭터 라인은 항상 같고, 로케일에 의한 영향은 받지 않는다. 즉, 10 진수 데이터를 교환하기 위한 표준적인 캐릭터 라인 표현, 즉 해시 테이블의 키등으로 해서 사용할 수가 있다. 로케일에 의존하는 수치의 포맷과 해석은,NumberFormat 클래스와 그 서브 클래스에 의해 처리된다
  3. 기술 표기법에서의 지수를 사용한 수치 표현에는 toEngineeringString() 메소드를,BigDecimal 의 둥근에는 소수점 이하의 자리수가 기존인 setScale 메소드를, 각각 사용할 수 있다
  4. Character.forDigit 에 의해 제공되는 숫자로부터 문자에의 매핑이 사용된다

오버라이드(override):
클래스 Object 내의 toString
반환값:
BigDecimal 의 캐릭터 라인 표현
관련 항목:
Character.forDigit(int, int) , BigDecimal(java.lang.String)

toEngineeringString

public String  toEngineeringString()
지수가 필요한 경우, 기술 표기법으로, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다.

toString() 메소드로 기술되고 있도록(듯이),BigDecimal 를 나타내는 캐릭터 라인을 돌려줍니다. 다만, 지수 표현이 사용되는 경우, 0 이 아닌 값의 정수부가 1 ~ 999 의 범위에 들어가도록(듯이), 10 의 누승은 3 의 배수 (기술 표기법)에 조정됩니다. 값 0 에 대해 지수 표현이 사용되는 경우, 값 0 의 스케일을 유지하기 위해서 소수점과 1 개 또는 2 개의 소수부의 자리수가 사용됩니다. toString() 의 출력과 달라, 이 메소드의 출력으로는,캐릭터 라인 생성자 을 사용해 출력 캐릭터 라인을 BigDecimal 에 되돌렸을 때에,BigDecimal 의 같은 [integer, scale] 페어의 복원은 보증되지 않는 것에 주의해 주세요. 이 메소드의 결과는, 캐릭터 라인 생성자 을 메소드의 출력에 적용한 결과와 등가인 수치를 항상 생성한다고 하는 약한 제약을 채웁니다.

반환값:
지수가 필요한 경우, 기술 표기법에 따르는, 이 BigDecimal 의 캐릭터 라인 표현
도입된 버젼:
1.5

toPlainString

public String  toPlainString()
지수 필드없이, 이 BigDecimal 의 캐릭터 라인 표현을 돌려줍니다. 정의 스케일을 가지는 값의 경우, 소수점 이하의 자리수는, 스케일을 나타내기 위해서(때문에) 사용됩니다. 스케일이 0 또는 0 보다 작은 값의 경우, 결과의 캐릭터 라인은, 그 값이 스케일 0 을 가지는 수치적으로 등가인 값에 변환되어 스케일 0 의 값의 후속의 0 모든 것이 결과에 존재하는것 같이 생성됩니다. 스케일 없음의 값이 0 미만의 경우, 캐릭터 라인 전체의 선두에 마이너스 부호 문자 「-」( 「\u002D」)이 붙일 수 있습니다. 스케일 없음의 값이 0 또는 정의 경우, 부호 문자는 붙일 수 없습니다. 이 메소드의 결과가캐릭터 라인 생성자 에게 건네지는 경우, 이 BigDecimal 의 수치만이 반드시 복원됩니다. 새로운 BigDecimal 의 표현은 다른 스케일을 가질 가능성이 있습니다. 특히, 이 BigDecimal 가 부의 스케일을 가지는 경우, 이 메소드의 결과의 캐릭터 라인은, 캐릭터 라인 생성자 에 의해 처리될 때 스케일 0 을 가집니다. (이 메소드의 동작은, 1.4 이전의 릴리스에서의 toString 메소드와 같이)

반환값:
BigDecimal 의, 지수 필드가 없는 캐릭터 라인 표현
도입된 버젼:
1.5
관련 항목:
toString() , toEngineeringString()

toBigInteger

public BigInteger  toBigInteger()
BigDecimalBigInteger 로 변환합니다. 이 변환은,「Java 언어 스펙」으로 정의된 double 로부터 long 에의 「네로우 프리미티브(primitive) 변환」이라고 같습니다. 이 BigDecimal 의 소수부는 모두 파기됩니다. 이 변환에 의해,BigDecimal 치의 정밀도에 관한 정보가 없어질 가능성이 있습니다.

변환이 정확하지 않은 (즉, 0 이외의 소수부가 파기된다) 경우에 예외를 throw 하려면 ,toBigIntegerExact() 메소드를 사용해 주세요.

반환값:
BigInteger 에 변환된 이 BigDecimal

toBigIntegerExact

public BigInteger  toBigIntegerExact()
BigDecimalBigInteger 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. 이 BigDecimal 에 0 이외의 소수부가 있는 경우, 예외가 throw 됩니다.

반환값:
BigInteger 에 변환된 이 BigDecimal
예외:
ArithmeticException - this 가 0 이외의 소수부를 가지는 경우
도입된 버젼:
1.5

longValue

public long longValue()
BigDecimallong 로 변환합니다. 이 변환은,「Java 언어 스펙」으로 정의된 double 로부터 short 에의 「네로우 프리미티브(primitive) 변환」이라고 같습니다. 이 BigDecimal 의 소수부는 모두 파기됩니다. 결과의 「BigInteger」가 너무 길어 long 내에 들어가지 않는 경우, 하위 64 비트만이 돌려주어집니다. 이 변환에 의해, 이 BigDecimal 치의 절대치와 정밀도 전체에 관한 정보가 없어져 역의 부호로 돌려주어질 가능성이 있습니다.

정의:
클래스 Number 내의 longValue
반환값:
long 에 변환된 이 BigDecimal

longValueExact

public long longValueExact()
BigDecimallong 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. 이 BigDecimal 에 0 이외의 소수부가 있다, 또는 long 의 결과로서 가능한 범위외인 경우,ArithmeticException 가 throw 됩니다.

반환값:
long 에 변환된 이 BigDecimal
예외:
ArithmeticException - this 가 0 이외의 소수부를 가진다, 또는 long 내에 들어가지 않는 경우
도입된 버젼:
1.5

intValue

public int intValue()
BigDecimalint 로 변환합니다. 이 변환은,「Java 언어 스펙」으로 정의된 double 로부터 short 에의 「네로우 프리미티브(primitive) 변환」이라고 같습니다. 이 BigDecimal 의 소수부는 모두 파기됩니다. 결과의 「BigInteger」가 너무 길어 int 내에 들어가지 않는 경우, 하위 32 비트만이 돌려주어집니다. 이 변환에 의해, 이 BigDecimal 치의 절대치와 정밀도 전체에 관한 정보가 없어져 역의 부호로 돌려주어질 가능성이 있습니다.

정의:
클래스 Number 내의 intValue
반환값:
int 에 변환된 이 BigDecimal

intValueExact

public int intValueExact()
BigDecimalint 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. 이 BigDecimal 에 0 이외의 소수부가 있다, 또는 int 의 결과로서 가능한 범위외인 경우,ArithmeticException 가 throw 됩니다.

반환값:
int 에 변환된 이 BigDecimal
예외:
ArithmeticException - this 가 0 이외의 소수부를 가진다, 또는 int 내에 들어가지 않는 경우
도입된 버젼:
1.5

shortValueExact

public short shortValueExact()
BigDecimalshort 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. 이 BigDecimal 에 0 이외의 소수부가 있다, 또는 short 의 결과로서 가능한 범위외인 경우,ArithmeticException 가 throw 됩니다.

반환값:
short 에 변환된 이 BigDecimal
예외:
ArithmeticException - this 가 0 이외의 소수부를 가진다, 또는 short 내에 들어가지 않는 경우
도입된 버젼:
1.5

byteValueExact

public byte byteValueExact()
BigDecimalbyte 로 변환해, 없어진 정보가 있는지 없는지를 확인합니다. 이 BigDecimal 에 0 이외의 소수부가 있다, 또는 byte 의 결과로서 가능한 범위외인 경우,ArithmeticException 가 throw 됩니다.

반환값:
byte 에 변환된 이 BigDecimal.
예외:
ArithmeticException - this 가 0 이외의 소수부를 가진다, 또는 byte 내에 들어가지 않는 경우
도입된 버젼:
1.5

floatValue

public float floatValue()
BigDecimalfloat 로 변환합니다. 이 변환은,「Java 언어 스펙」으로 정의된 double 로부터 float 에의 「네로우 프리미티브(primitive) 변환」이라고 같습니다. 이 BigDecimal 의 절대치가 너무 커 float 로서 표현할 수 없는 경우, 적당 Float.NEGATIVE_INFINITY 또는 Float.POSITIVE_INFINITY 에 변환됩니다. 반환값이 유한한 경우도, 이 변환에 의해,BigDecimal 치의 정밀도에 관한 정보가 없어질 가능성이 있습니다.

정의:
클래스 Number 내의 floatValue
반환값:
float 에 변환된 이 BigDecimal

doubleValue

public double doubleValue()
BigDecimaldouble 로 변환합니다. 이 변환은,「Java 언어 스펙」으로 정의된 double 로부터 float 에의 「네로우 프리미티브(primitive) 변환」이라고 같습니다. 이 BigDecimal 의 절대치가 너무 커 double 로서 표현할 수 없는 경우, 적당 Double.NEGATIVE_INFINITY 또는 Double.POSITIVE_INFINITY 에 변환됩니다. 반환값이 유한한 경우도, 이 변환에 의해,BigDecimal 치의 정밀도에 관한 정보가 없어질 가능성이 있습니다.

정의:
클래스 Number 내의 doubleValue
반환값:
double 에 변환된 이 BigDecimal

ulp

public BigDecimal  ulp()
BigDecimal 의 ulp (최종자리수 단위)의 사이즈를 돌려줍니다. 0 이외의 BigDecimal 치의 ulp 는, 이 값과 다음에 큰 절대치 및 같은 자리수를 가지는 BigDecimal 치의 사이의 정의 거리입니다. 값 0 의 ulp 는, 스케일 this 를 가지는 1 으로 수치가 동일해집니다. 결과는 this 와 같은 스케일로 포함되어 0 및 0 이외의 값의 결과는 [1, this.scale()] 와 동일해집니다.

반환값:
this 의 ulp 의 사이즈
도입된 버젼:
1.5

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.