Decimal 데이터 형식(Visual Basic)
업데이트: 2007년 11월
10의 가변 거듭제곱으로 환산된 96비트(12바이트) 정수를 나타내는 부호 있는 128비트(16바이트) 값을 저장합니다. 10의 거듭제곱에 대한 배율 인수는 소수 자릿수를 0개에서 28개까지 지정할 수 있습니다. 배율이 0인 경우, 즉 소수 자릿수가 없는 경우 가능한 값은 +/-79,228,162,514,264,337,593,543,950,335(+/-7.9228162514264337593543950335E+28) 사이의 값입니다. 소수 자릿수가 28인 경우 가능한 값은 +/-7.9228162514264337593543950335 사이의 값이며, 0이 아닌 값 중에서 최소값은 +/-0.0000000000000000000000000001(+/-E-28)입니다.
설명
Decimal 데이터 형식은 숫자에 대한 최대 유효 자릿수를 제공합니다. 이 데이터 형식은 최대 29개의 유효 자릿수를 지원하고 7.9228 x 10^28을 초과하는 값을 나타낼 수 있습니다. 이 형식은 특히 금융 분야처럼 많은 자릿수가 필요하지만 반올림 오류가 발생해서는 안 되는 계산에 적합합니다.
Decimal의 기본값은 0입니다.
프로그래밍 팁
**정밀도.**Decimal은 부동 소수점 데이터 형식이 아닙니다. Decimal 구조체는 이진 정수 값을 부호 비트 및 소수점 아래에 해당하는 값 부분을 지정하는 소수 자릿수 요소와 함께 사용합니다. 따라서 Decimal 숫자는 부동 소수점 형식(Single 및 Double)보다 메모리에서 더 정밀한 표현을 제공합니다.
**성능.**Decimal 데이터 형식은 모든 숫자 형식 중 가장 느린 형식입니다. 데이터 형식을 선택하기 전에 정밀도와 성능 중 무엇이 더 중요한지를 충분히 검토해야 합니다.
**확대 변환.**Decimal 데이터 형식은 Single 또는 Double로 확대 변환됩니다. 이것은 System.OverflowException 오류의 발생 없이 Decimal을 이러한 형식 중 하나로 변환할 수 있음을 의미합니다.
뒤에 오는 0. Visual Basic에서는 후행 0 문자를 Decimal 리터럴에 저장하지 않습니다. 그러나 Decimal 변수는 계산을 통해 얻은 후행 0 문자를 유지합니다. 다음은 이에 대한 예입니다.
Dim d1, d2, d3, d4 As Decimal d1 = 2.375D d2 = 1.625D d3 = d1 + d2 d4 = 4.000D MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) _ & ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
이전 예제의 MsgBox 출력은 다음과 같습니다.
d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
형식 문자. 리터럴 형식 문자 D를 리터럴에 추가하면 Decimal 데이터 형식이 됩니다. 식별자 형식 문자 @을 식별자에 추가하면 Decimal가 됩니다.
Framework 형식. .NET Framework에서 해당하는 형식은 System.Decimal 구조체입니다.
범위
Decimal 변수 또는 상수에 큰 값을 할당하려면 D 형식 문자를 사용해야 할 수 있습니다. 다음은 이에 대한 예입니다.
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
컴파일러는 리터럴 뒤에 리터럴 형식 문자가 올 때까지는 리터럴을 Long으로 해석합니다. bigDec1에 대한 선언은 값이 Long의 범위 내에 포함되기 때문에 오버플로를 생성하지 않습니다. 그러나 bigDec2의 값이 Long에 비해 너무 크기 때문에 컴파일러에서 오류를 생성합니다. 리터럴 형식 문자 D는 컴파일러가 리터럴을 Decimal로 해석하게 하여 bigDec3에 대한 문제를 해결합니다.