출처: http://www.20002.co.kr/zbxe/?document_srl=20145
Visual Basic에서는 다양한 표현으로 숫자를 처리할 수 있도록 여러 숫자 데이터 형식을 제공합니다. 정수 계열 형식은 정수(양수, 음수 및 0)만 나타내고 비정수 계열 형식은 정수 부분과 소수점 아래 부분이 모두 있는 숫자를 나타냅니다.
Visual Basic 데이터 형식을 비교한 표를 보려면 데이터 형식 요약(Visual Basic)을 참조하십시오.
![](http://i.msdn.microsoft.com/Global/Images/clear.gif)
정수 계열 데이터 형식은 소수점 아래 부분이 없는 정수만 나타내는 데이터 형식입니다.
부호 있는 정수 계열 데이터 형식은 SByte 데이터 형식(Visual Basic)(8비트), Short 데이터 형식(Visual Basic)(16비트), Integer 데이터 형식(Visual Basic)(32비트) 및 Long 데이터 형식(Visual Basic)(64비트)입니다. 변수가 소수점 아래 부분이 있는 숫자 대신 항상 정수만 포함하는 경우 변수를 이 형식 중 하나로 선언합니다.
부호 없는 정수 계열 형식은 Byte 데이터 형식(Visual Basic)(8비트), UShort 데이터 형식(Visual Basic)(16비트), UInteger 데이터 형식(32비트) 및 ULong 데이터 형식(Visual Basic)(64비트)입니다. 변수가 이진 데이터나 특성을 알 수 없는 데이터를 포함하는 경우 변수를 이 형식 중 하나로 선언합니다.
성능
산술 연산에는 정수 계열 형식을 사용하는 것이 다른 데이터 형식을 사용하는 것보다 빠릅니다. Visual Basic의 Integer 및 UInteger 형식을 사용하면 산술 연산을 가장 빠르게 수행할 수 있습니다.
큰 정수
Integer 데이터 형식에 포함될 수 있는 것보다 더 큰 정수를 포함해야 하는 경우 Long 데이터 형식을 대신 사용할 수 있습니다. Long 변수에는 -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 숫자가 포함될 수 있습니다. Long을 사용하는 연산 작업은 Integer을 사용하는 연산 작업보다 속도가 다소 느립니다.
이보다 훨씬 더 큰 값이 필요한 경우 Decimal 데이터 형식(Visual Basic)을 사용할 수 있습니다. Decimal에 는 -79,228,162,514,264,337,593,543,950,335부터 79,228,162,514,264,337,593,543,950,335까지의 숫자(소수 자릿수를 사용하지 않은 경우)가 포함될 수 있습니다. 그러나 Decimal 숫자를 사용하는 연산 작업은 다른 숫자 데이터 형식을 사용하는 연산 작업보다 속도가 상당히 느립니다.
작은 정수
모든 범위의 Integer 데이터 형식이 필요한 경우가 아니라면 -32,768부터 32,767까지의 정수를 포함할 수 있는Short데이터 형식을 사용할 수 있습니다. 가장 작은 정수 범위를 사용하려면 -128부터 127까지의 정수를 포함하는 SByte 데이터 형식을 사용합니다. 작은 정수를 포함하는 변수가 매우 많은 경우 공용 언어 런타임에서 Short 및 SByte 변수를 저장하는 것이 더 효율적이며 메모리 사용량도 줄일 수 있습니다. 그러나 Short 및 SByte를 사용하는 연산 작업은 Integer를 사용하는 연산 작업보다 속도가 조금 느립니다.
부호 없는 정수
변수가 음수를 포함할 필요가 없는 경우 부호 없는 형식인 Byte, UShort, UInteger 및 ULong을 사용할 수 있습니다. 이러한 데이터 형식은 각각 대응되는 부호 있는 형식(SByte, Short, Integer 및 Long) 에서 포함할 수 있는 양의 두 배에 해당하는 정수를 포함할 수 있습니다. 성능 면에서는 부호 없는 형식과 대응되는 부호 있는 형식의 효율성이 정확히 동일합니다. 특히 UInteger와 Integer는 모든 기본 숫자 데이터 형식 중에서 가장 효율적입니다.
![](http://i.msdn.microsoft.com/Global/Images/clear.gif)
비정수 데이터 형식은 정수와 소수 부분을 모두 가진 숫자를 나타냅니다.
비정수 계열 숫자 데이터 형식은 Decimal(128비트 고정 소수점), Single 데이터 형식(Visual Basic)(32비트 부동 소수점) 및 Double 데이터 형식(Visual Basic)(64비트 부동 소수점)입니다. 이 데이터 형식은 모두 부호 있는 형식입니다. 변수가 소수를 포함할 수 있으면 변수를 이 형식 중 하나로 선언합니다.
Decimal은 부동 소수점 데이터 형식이 아닙니다. Decimal 숫자는 이진 정수 값과 소수점 아래에 해당하는 값 부분을 지정하는 소수 자릿수 요소를 갖습니다.
부동 소수점(Single 및 Double) 숫자는 Decimal 숫자보다 더 큰 범위를 나타낼 수 있지만 반올림 오류가 발생할 수 있습니다. 부동 소수점 형식은 Decimal보 다 적은 유효 자릿수를 지원하지만 더 큰 값을 나타낼 수 있습니다.
비정수 계열 숫자 값은 mmmEeee로 나타낼 수 있습니다. 여기서 mmm은 가수(유효 자릿수)이며 eee는 지수(10의 거듭제곱)입니다. 비정수 계열 형식에서 가장 큰 양수 값은 Decimal의 경우 7.9228162514264337593543950335E+28이고, Single의 경우 3.4028235E+38이고, Double의 경우 1.79769313486231570E+308입니다.
성능
현재 플랫폼의 프로세서는 배정밀도의 부동 소수점 연산을 수행하므로 Double이 소수 데이터 형식 중 가장 효율적인 형식입니다. 그러나 Double을 사용하는 연산 작업은 Integer 등의 정수 계열 형식을 사용하는 연산보다 속도가 느립니다.
작은 크기
크기가 가능한 한 가장 작은 숫자(0에 가장 가까운 숫자)를 사용해야 하는 경우 Double 변수를 사용하면 음수 값의 경우 -4.94065645841246544E-324, 양수 값의 경우 4.94065645841246544E-324에 해당하는 작은 크기의 숫자를 포함할 수 있습니다.
작은 소수
Double 데이터 형식의 범위가 모두 필요하지는 않은 경우 Single 데이터 형식을 사용할 수 있습니다. 이 형식에는 -3.4028235E+38부터 3.4028235E+38까지의 부동 소수점 숫자가 포함될 수 있습니다. Single 변수에 사용할 수 있는 가장 작은 크기의 값은 음수의 경우 -1.401298E-45이고 양수의 경우 1.401298E-45입니다. 작은 부동 소수점 숫자를 포함하는 변수가 매우 많은 경우 일반 언어 런타임에서 Single 변수를 저장하는 것이 더 효율적이며 메모리 사용량도 줄일 수 있습니다.
형식 | 런타임 형식 | 저장소 할당 | 값 범위 |
Boolean | Boolean | 플랫폼에 따라 | True 또는 False |
Byte | Byte | 1바이트 | 0~255(부호 없음) |
Char(단일 문자) | Char | 2바이트 | 0~65535(부호 없음) |
Date | DateTime | 8바이트 | 0:00:00~11:59:59 PM |
Decimal | Decimal | 16바이트 | 소수x : 0~ +/-79,228,162,514,264,337,593,543,950,335(+/-7.9...E+28) 소수 : 0~ +/-7.9228162514264337593543950335(소수 자릿수가 28개). |
Double (배정밀도 부동 소수점) | Double | 8바이트 | 음수 : -1.79769313486231570E+308~ -4.94065645841246544E-324. 양수 : 4.94065645841246544E-324~ 1.79769313486231570E+308 |
Integer | Int32 | 4바이트 | -2,147,483,648~ 2,147,483,647 |
Long (정수(Long)) | Int64 | 8바이트 | -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807(9.2...E+18) |
Object | Object(클래스) | 32(4),64(8) | Object 형식의 변수에는 모든 형식을 저장할 수 있습니다. |
SByte | SByte | 1바이트 | -128~ 127 |
Short(정수(Short)) | Int16 | 2바이트 | -32,768~ 32,767 |
Single (단정밀도 부동 소수점) | Single | 4바이트 | 음수 : -3.4028235E+38~ -1.401298E-45 양수 : 1.401298E-45~ 3.4028235E+38. |
String (가변 길이) | String(클래스) | 플랫폼에 따라 | 0에서 약 20억 개의 유니코드 문자입니다. |
UInteger | UInt32 | 4바이트 | 0~ 4,294,967,295 |
ULong | UInt64 | 8바이트 | 0~ 18,446,744,073,709,551,615(1.8...E+19) |
사용자 정의(구조체) | (ValueType에서 상속) | 플랫폼에 따라 | 구조체의 각 멤버는 데이터 형식에 의해 결정되고 다른 멤버의 범위와 무관 |
UShort | UInt16 | 2바이트 | 0~ 65,535 |
'Visual Basic.Net' 카테고리의 다른 글
VB 함수정리 (0) | 2012.11.25 |
---|---|
BeginInvoke 와 Invoke (0) | 2012.11.23 |
ByRef와 ByVal 의 차이점, 그리고 어떨떄 써야할까? (0) | 2012.11.23 |
InitializeComponent() (0) | 2012.11.23 |
선언시 As New 와 As 그리고 New (0) | 2012.11.23 |