BigDecimal 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다.
[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)>]
type BigDecimal = class
inherit Number
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- 상속
- 특성
- 구현
설명
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. 는 BigDecimal
임의의 전체 자릿수 정수 #unscaledValue() 크기 조정되지 않은 값 과 32비트 정수 #scale() 배율로 구성됩니다. 0 또는 양수이면 소수점 오른쪽에 있는 자릿수입니다. 음수이면 숫자의 스케일링되지 않은 값에 10을 곱하여 배율 부정의 힘을 곱합니다. 따라서 (unscaledValue × 10<sup>-scale</sup>)
가 나타내는 BigDecimal
숫자의 값은 입니다.
클래스는 BigDecimal
산술, 배율 조작, 반올림, 비교, 해시 및 형식 변환에 대한 작업을 제공합니다. 메서드는 #toString
의 정식 표현을 BigDecimal
제공합니다.
클래스는 BigDecimal
사용자가 반올림 동작을 완전히 제어할 수 있게 해줍니다. 반올림 모드를 지정하지 않고 정확한 결과를 나타낼 ArithmeticException
수 없는 경우 이 throw됩니다. 그렇지 않으면 작업에 적절한 MathContext
개체를 제공하여 계산을 선택한 정밀도 및 반올림 모드로 수행할 수 있습니다. 두 경우 모두 반올림 제어를 위해 8개의 <<em>반올림 모드/em>이 제공됩니다. 이 클래스의 정수 필드(예: #ROUND_HALF_UP
)를 사용하여 반올림 모드를 나타내는 것은 더 이상 사용되지 않습니다. 대신 의 RoundingMode
enum
열거형 값(예: RoundingMode#HALF_UP
)을 사용해야 합니다.
개체의 MathContext
전체 자릿수 설정이 0인 경우(예 MathContext#UNLIMITED
: ) 산술 연산은 개체를 사용하지 않는 MathContext
산술 메서드와 마찬가지로 정확합니다. 정확한 결과를 계산하는 데 있어 정밀도 설정이 0인 MathContext
개체의 반올림 모드 설정은 사용되지 않으므로 관련이 없습니다. 나누기의 경우 정확한 몫은 무한히 긴 10진수 확장이 있을 수 있습니다. 예를 들어 1을 3으로 나눕니다. 몫에 10진수 확장이 없는 경우 작업이 정확한 결과를 반환하도록 지정되면 이 ArithmeticException
throw됩니다. 그렇지 않으면 다른 작업에 대해 수행된 대로 나누기의 정확한 결과가 반환됩니다.
정밀도 설정이 0이 아닌 경우 산술 규칙은 BigDecimal
ANSI X3.274-1996 및 ANSI X3.274-1996/AM 1-2000(섹션 7.4)에 정의된 선택한 산술 연산 모드와 광범위하게 호환됩니다. 이러한 표준과 BigDecimal
달리 에는 많은 반올림 모드가 포함됩니다. 이러한 ANSI 표준과 BigDecimal
사양 간의 충돌은 를 위해 BigDecimal
해결됩니다.
동일한 숫자 값은 서로 다른 표현(다른 눈금 사용)을 가질 수 있으므로 산술 및 반올림 규칙은 결과 표현에 사용되는 숫자 결과와 배율을 모두 지정해야 합니다.
동일한 숫자 값의 다른 표현을 동일한 코호트의 멤버라고 합니다. 의 #compareTo(BigDecimal) 자연 순서 BigDecimal
는 동일한 코호트의 멤버를 서로 같음으로 간주합니다. 반면, 메서드는 #equals(Object) equals
같음이 유지되려면 숫자 값과 표현이 모두 동일해야 합니다. 및 #unscaledValue()
와 같은 #scale()
메서드의 결과는 서로 다른 표현을 가진 숫자와 같은 값에 대해 다릅니다.
일반적으로 반올림 모드 및 정밀도 설정은 정확한 결과에 반환된 숫자 수보다 더 많은 숫자(나누기 및 제곱근의 경우 무한히 많은 수)가 있을 때 작업이 제한된 수의 숫자로 결과를 반환하는 방법을 결정합니다.
먼저 반환할 총 자릿수는 의 precision
설정에 의해 MathContext
지정됩니다. 이렇게 하면 결과의 전체 자릿수가 결정됩니다. 숫자 수는 정확한 결과의 0이 아닌 가장 왼쪽 숫자부터 시작합니다. 반올림 모드는 삭제된 후행 숫자가 반환된 결과에 미치는 영향을 결정합니다.
모든 산술 연산자의 경우 작업은 선택한 반올림 모드를 사용하여 정확한 중간 결과가 먼저 계산된 다음 정밀도 설정(필요한 경우)에 지정된 자릿수로 반올림된 것처럼 수행됩니다. 정확한 결과가 반환되지 않으면 정확한 결과의 일부 자릿수 위치가 삭제됩니다. 반올림하면 반환된 결과의 크기가 증가하면 선행 "9" 숫자로 전파되는 캐리를 통해 새 숫자 위치를 만들 수 있습니다. 예를 들어 반올림하는 999.9 값을 3자리 숫자로 반올림하면 1,000과 숫자로 같으며 100번&표시됩니다. 10<sup>1</sup>. 이러한 경우 새 "1"은 반환된 결과의 선행 숫자 위치입니다.
매개 변수가 있는 MathContext
메서드 및 생성자의 경우 결과가 인 경우 반올림 모드가 RoundingMode#UNNECESSARY UNNECESSARY
이고, 이 ArithmeticException
throw됩니다.
논리적 정확한 결과 외에도 각 산술 연산에는 결과를 나타내기 위한 기본 소수 자릿수가 있습니다. 각 작업에 대한 기본 크기 조정은 아래 표에 나와 있습니다.
<table class="striped" style="text-align:left">캡션Preferred Scales for Results of Arithmetic Operations </캡션><thead<>tr><th scope="col">Operation</th th><scope="col">Preferred Scale of Result</th></tr<>/thead<>tbody<>tr><th scope="row"><>add</th><td>max(addend.scale(), augend.scale())</td><tr><th scope="row">Subtract</th><td>max(minuend.scale(), subtrahend.scale()) )</td<>tr><th scope="row">Multiply</th><td>multiplier.scale() + multiplicand.scale()</td><tr><th scope="row">Divide</th><td>dividend.scale() - divisor.scale()</td><tr><th scope="row">Square root</th><td radicand.scale>()/2</td<>/tbody></table>
이러한 눈금은 정확한 산술 결과를 반환하는 메서드에서 사용되는 배율입니다. 정확한 결과에 더 많은 자릿수가 있을 수 있으므로 정확한 나누기에서는 더 큰 배율을 사용해야 할 수 있습니다. 예를 들어 1/32
는 0.03125
입니다.
반올림하기 전에 논리적 정확한 중간 결과의 배율은 해당 작업에 대해 선호되는 배율입니다. 정확한 숫자 결과를 숫자로 precision
나타낼 수 없는 경우 반올림은 반환할 숫자 집합을 선택하고 결과의 배율을 중간 결과의 배율에서 실제로 반환된 숫자를 나타낼 precision
수 있는 최소 소수 자릿수로 줄입니다. 정확한 결과를 최대 precision
숫자로 나타낼 수 있는 경우 기본 설정 눈금에 가장 가까운 배율을 가진 결과의 표현이 반환됩니다. 특히 정확히 나타낼 수 있는 몫은 후행 0을 제거하고 배율을 줄여 숫자보다 precision
적은 수로 나타낼 수 있습니다. 예를 들어 RoundingMode#FLOOR floor rounding mode를 사용하여 3자리 숫자로 반올림하는 경우 br <>
19/100 = 0.19 // integer=19, scale=2
<Br>
그러나<br>
21/110 = 0.190 // integer=190, scale=3
<Br>
추가, 빼기 및 곱하기의 경우 배율 감소는 삭제되는 정확한 결과의 숫자 위치 수와 같습니다. 반올림으로 인해 캐리 전파가 새 상위 자릿수 위치를 만들면 새 숫자 위치가 만들어지지 않을 때보다 결과의 추가 숫자가 삭제됩니다.
다른 메서드에는 약간 다른 반올림 의미 체계가 있을 수 있습니다. 예를 들어 #pow(int, MathContext) 지정된 알고리즘을 사용하는 메서드의 pow
결과는 마지막 위치에서 두 개 이상의 단위(하나의 #ulp() ulp)로 반올림된 수학 결과와 다를 수 있습니다.
크기 조정/반올림 작업 및 소수점 이동 연산의 BigDecimal
배율을 조작하기 위해 두 가지 유형의 작업이 제공됩니다. 크기 조정/반올림 작업(#setScale setScale
및 )은 해당 값이 피연산자의 값과 #round round
거의(또는 정확히) 같지만 소수 자릿수 또는 정밀도가 지정된 값인 를 반환 BigDecimal
합니다. 즉, 값에 미치는 영향을 최소화하면서 저장된 숫자의 전체 자릿수를 늘리거나 줄입니다. 소수점 동작 연산(#movePointLeft movePointLeft
및 #movePointRight movePointRight
)은 소수점을 지정된 방향으로 지정된 거리로 이동하여 피연산자에서 만든 을 반환 BigDecimal
합니다.
32비트 정수로서 눈금의 값 집합은 크지만 경계가 있습니다. 결과의 소수 자릿수가 오버플로 또는 언더플로에 의해 32비트 정수 범위를 초과하면 작업이 을 ArithmeticException
throw할 수 있습니다.
간결하고 명확성을 위해 의사 코드는 메서드에 대한 설명 BigDecimal
전체에서 사용됩니다. 의사 코드 식은 "BigDecimal
값이 의 에 추가된 의 BigDecimal
i
값인 ""에j
BigDecimal
대한 약어입니다.(i + j)
의사 코드 식은 "true
에 대한 약식이며 가 와 같은 값을j
BigDecimal
나타내는 경우에만 BigDecimal
i
입니다.(i == j)
다른 의사 코드 식도 비슷하게 해석됩니다. 대괄호는 값을 정의하는 특정 BigInteger
및 배율 쌍을 BigDecimal
나타내는 데 사용됩니다. 예를 들어 [19, 2]는 BigDecimal
소수 자릿수가 2인 0.19와 숫자로 같습니다.
이 클래스에 대한 모든 메서드 및 생성자는 입력 매개 변수에 대한 개체 참조를 null
전달할 때 throw NullPointerException
됩니다.
1.1에 추가되었습니다.
에 대한 Java 설명서입니다 java.math.BigDecimal
.
이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.
생성자
BigDecimal(BigInteger) |
을 로 |
BigDecimal(BigInteger, Int32) |
크기가 |
BigDecimal(BigInteger, Int32, MathContext) |
크기가 |
BigDecimal(BigInteger, MathContext) |
컨텍스트 설정에 |
BigDecimal(Char[]) |
의 문자 배열 표현을 |
BigDecimal(Char[], Int32, Int32) |
의 문자 배열 표현을 |
BigDecimal(Char[], Int32, Int32, MathContext) |
의 문자 배열 표현을 |
BigDecimal(Char[], MathContext) |
의 문자 배열 표현을 |
BigDecimal(Double) |
을 |
BigDecimal(Double, MathContext) |
컨텍스트 설정에 |
BigDecimal(Int32) |
을 로 |
BigDecimal(Int32, MathContext) |
컨텍스트 설정에 |
BigDecimal(Int64) |
을 로 |
BigDecimal(Int64, MathContext) |
컨텍스트 설정에 |
BigDecimal(IntPtr, JniHandleOwnership) |
JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다. |
BigDecimal(String) |
의 문자열 표현을 |
BigDecimal(String, MathContext) |
의 문자열 표현 |
필드
RoundCeiling |
양수 무한대로 반올림하는 반올림 모드입니다. |
RoundDown |
반올림 모드를 0으로 반올림합니다. |
RoundFloor |
음의 무한대로 반올림하는 반올림 모드입니다. |
RoundHalfDown |
두 인접 항목이 모두 등거리가 아니면 "가장 가까운 이웃"으로 반올림하는 반올림 모드입니다. 이 경우 반올림합니다. |
RoundHalfEven |
두 이웃이 등거리가 아니면 "가장 가까운 이웃"을 향해 반올림 모드를 반올림합니다. 이 경우 짝수 이웃을 향해 반올림합니다. |
RoundHalfUp |
두 인접 항목이 모두 등거리가 아니면 "가장 가까운 이웃"으로 반올림하는 반올림 모드입니다. 이 경우 반올림합니다. |
RoundUnnecessary |
요청된 작업에 정확한 결과가 있음을 어설션하는 반올림 모드이므로 반올림이 필요하지 않습니다. |
RoundUp |
반올림 모드를 0에서 둥글게 합니다. |
속성
Class |
이 |
Handle |
기본 Android instance 대한 핸들입니다. (다음에서 상속됨 Object) |
JniIdentityHashCode |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
JniPeerMembers |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. |
One |
크기가 0인 값 1입니다. |
PeerReference |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
Ten |
크기가 0인 값 10입니다. |
ThresholdClass |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
ThresholdType |
이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. |
Zero |
크기가 0인 값 0입니다. |
메서드
Abs() |
값이 |
Abs(MathContext) |
컨텍스트 설정에 |
Add(BigDecimal) |
값이 |
Add(BigDecimal, MathContext) |
컨텍스트 설정에 |
ByteValue() |
지정된 숫자의 값을 로 반환합니다 |
ByteValueExact() |
이 |
Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 Object) |
CompareTo(BigDecimal) |
이 |
Dispose() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
Dispose(Boolean) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
Divide(BigDecimal) |
|
Divide(BigDecimal, Int32, RoundingMode) |
값이 |
Divide(BigDecimal, Int32, RoundOptions) |
값이 |
Divide(BigDecimal, MathContext) |
컨텍스트 설정에 |
Divide(BigDecimal, RoundingMode) |
값이 |
Divide(BigDecimal, RoundOptions) |
값이 |
DivideAndRemainder(BigDecimal) |
의 결과와 두 피연산자의 결과가 |
DivideAndRemainder(BigDecimal, MathContext) |
컨텍스트 설정에 따라 반올림을 사용하여 계산된 두 피연산자의 결과 다음에 의 결과가 |
DivideToIntegralValue(BigDecimal) |
값이 |
DivideToIntegralValue(BigDecimal, MathContext) |
값이 |
DoubleValue() |
이 |
Equals(Object) |
다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다. (다음에서 상속됨 Object) |
FloatValue() |
이 |
GetHashCode() |
개체의 해시 코드 값을 반환합니다. (다음에서 상속됨 Object) |
IntValue() |
이 |
IntValueExact() |
손실된 정보를 확인하는 로 |
JavaFinalize() |
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
LongValue() |
이 |
LongValueExact() |
이 |
Max(BigDecimal) |
이 |
Min(BigDecimal) |
이 |
MovePointLeft(Int32) |
|
MovePointRight(Int32) |
|
Multiply(BigDecimal) |
값이 |
Multiply(BigDecimal, MathContext) |
컨텍스트 설정에 |
Negate() |
값이 |
Negate(MathContext) |
컨텍스트 설정에 |
Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
Plus() |
값이 |
Plus(MathContext) |
컨텍스트 설정에 |
Pow(Int32) |
값 |
Pow(Int32, MathContext) |
값이 인 를 |
Precision() |
이 |
Remainder(BigDecimal) |
값이 인 를 |
Remainder(BigDecimal, MathContext) |
컨텍스트 설정에 |
Round(MathContext) |
설정에 |
Scale() |
이 |
ScaleByPowerOfTen(Int32) |
숫자 값이 ( |
SetHandle(IntPtr, JniHandleOwnership) |
Handle 속성을 설정합니다. (다음에서 상속됨 Object) |
SetScale(Int32) |
|
SetScale(Int32, RoundingMode) |
|
SetScale(Int32, RoundOptions) |
|
ShortValue() |
지정된 숫자의 값을 로 반환합니다 |
ShortValueExact() |
이 |
Signum() |
이 |
Sqrt(MathContext) |
컨텍스트 설정에 따라 반올림을 사용하여 의 |
StripTrailingZeros() |
|
Subtract(BigDecimal) |
값이 |
Subtract(BigDecimal, MathContext) |
컨텍스트 설정에 |
ToArray<T>() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
ToBigInteger() |
이 |
ToBigIntegerExact() |
이 |
ToEngineeringString() |
지수가 필요한 경우 엔지니어링 표기법을 사용하여 이 |
ToPlainString() |
지수 필드가 없는 문자열 |
ToString() |
개체의 문자열 표현을 반환합니다. (다음에서 상속됨 Object) |
Ulp() |
이 |
UnregisterFromRuntime() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
UnscaledValue() |
값이 |
ValueOf(Double) |
메서드에서 |
ValueOf(Int64) |
|
ValueOf(Int64, Int32) |
크기가 |
Wait() |
현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다. (다음에서 상속됨 Object) |
Wait(Int64) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다. (다음에서 상속됨 Object) |
Wait(Int64, Int32) |
현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
IComparable.CompareTo(Object) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. |
IJavaPeerable.Disposed() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.Finalized() |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.JniManagedPeerState |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. (다음에서 상속됨 Object) |
확장 메서드
JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
JavaCast<TResult>(IJavaObject) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. |
GetJniTypeName(IJavaPeerable) |
변경할 수 없는 임의 정밀도 부호 있는 10진수입니다. |