Decimal 데이터 형식(Visual Basic)
10의 가변 배율로 스케일링된 96비트(12바이트) 정수 숫자를 표시하는 서명된 128비트(16바이트) 값을 보유합니다. 스케일링 인수는 소수점 오른쪽의 자릿수를 지정합니다. 범위는 0에서 28까지입니다. 스케일링이 0인 경우(소수 자릿수 없음) 가능한 가장 큰 값은 +/-79,228,162,514,264,337,593,543,950,335(+/-7.9228162514264337593543950335E+28)입니다. 소수 자릿수가 28개인 경우 가장 큰 값은 +/-7.9228162514264337593543950335이며, 0이 아닌 가장 작은 값은 +/-0.0000000000000000000000000001(+/-1E-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
가 됩니다.프레임워크 형식. .NET Framework에서 해당하는 형식은 System.Decimal 구조체입니다.
범위
Decimal
변수 또는 상수에 큰 값을 할당하려면 D
형식 문자를 사용해야 할 수 있습니다. 이 요구 사항은 다음 예제와 같이 리터럴 형식 문자가 리터럴을 따르지 않는 한 컴파일러가 리터럴을 Long
으로 해석하기 때문입니다.
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
bigDec1
에 대한 선언은 할당된 값이 Long
에 대한 범위 내에 속하기 때문에 오버플로를 생성하지 않습니다. Decimal
변수에 Long
값을 할당할 수 있습니다.
bigDec2
에 대한 선언은 할당된 값이 Long
에 대해 너무 커서 오버플로 오류를 생성합니다. 숫자 리터럴은 먼저 Long
으로 해석될 수 없으므로 Decimal
변수에 할당할 수 없습니다.
bigDec3
의 경우 리터럴 형식 문자 D
는 컴파일러가 리터럴을 Long
대신 Decimal
로 해석하도록 강제하여 문제를 해결합니다.
참고 항목
.NET