형식 변환 함수(Visual Basic)
이러한 함수는 인라인으로 컴파일됩니다. 즉, 변환 코드는 식을 평가하는 코드의 일부입니다. 때로는 변환을 수행하기 위한 프로시저를 호출하지 않아 성능이 개선되는 경우도 있습니다. 각 함수는 식을 특정 데이터 형식으로 강제 변환합니다.
구문
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)
요소
expression
필수입니다. 원본 데이터 형식의 모든 식입니다.
반환 값 데이터 형식
다음 표에 표시된 대로 함수 이름은 반환되는 값의 데이터 형식을 결정합니다.
함수 이름 | 반환 데이터 형식 | expression 인수의 범위 |
---|---|---|
CBool |
Boolean 데이터 형식 | 유효한 Char , String 또는 숫자 식. |
CByte |
Byte 데이터 형식 | Byte.MinValue(0) ~ Byte.MaxValue(255)(부호 없음), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CByte 함수를 사용하여 부동 소수점-바이트 변환 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CChar |
Char 데이터 형식 | 유효한 Char 또는 String 식. String 의 첫 번째 문자만 변환됩니다. 값은 0부터 65535까지(부호 없음)일 수 있습니다. |
CDate |
Date 데이터 형식 | 날짜 및 시간의 유효한 표현입니다. |
CDbl |
Double 데이터 형식 | 음수 값의 경우 -1.79769313486231570E+308 ~ -4.94065645841246544E-324, 양수 값의 경우 4.94065645841246544E-324 ~ 1.79769313486231570E+308입니다. |
CDec |
Decimal 데이터 형식 | 0 단위 숫자, 즉 소수 자릿수가 없는 숫자의 경우 +/-79,228,162,514,264,337,593,543,950,335입니다. 소수점 이하 28자리 숫자의 경우 범위는 +/-7.9228162514264337593543950335입니다. 0이 아닌 가능한 가장 작은 숫자는 0.0000000000000000000000000001(+/-1E-28)입니다. |
CInt |
Integer 데이터 형식 | Int32.MinValue(-2,147,483,648) ~ Int32.MaxValue(2,147,483,647), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CInt 함수를 사용하여 부동 소수점에서 정수로의 변환 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CLng |
Long 데이터 형식 | Int64.MinValue(-9,223,372,036,854,775,808) ~ Int64.MaxValue(9,223,372,036,854,775,807), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CLng 함수를 사용하여 부동 소수점에서 64비트 정수로의 변환 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CObj |
Object Data Type | 유효한 식입니다. |
CSByte |
SByte 데이터 형식 | SByte.MinValue(-128) ~ SByte.MaxValue(127), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CSByte 함수를 사용하여 부동 소수점에서 부호 있는 바이트로의 변환 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CShort |
Short 데이터 형식 | Int16.MinValue(-32,768) ~ Int16.MaxValue(32,767), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CShort 함수를 사용하여 부동 소수점을 16비트 정수로 변환하는 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CSng |
Single 데이터 형식 | -3.402823E+38 ~ -1.401298E-45(음수), 1.401298E-45 ~ 3.402823E+38(양수)입니다. |
CStr |
String 데이터 형식 | CStr 에 대한 반환은 expression 인수에 따라 달라집니다. CStr 함수의 반환 값을 참조하세요. |
CUInt |
UInteger 데이터 형식 | UInt32.MinValue(0) ~UInt32.MaxValue(4,294,967,295)(부호 없음), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CUInt 함수를 사용하여 부동 소수점을 부호 없는 정수로 변환하는 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CULng |
ULong 데이터 형식 | UInt64.MinValue(0) ~ UInt64.MaxValue(18,446,744,073,709,551,615)(부호 없음), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CULng 함수를 사용하여 부동 소수점을 부호 없는 정수(Long)로 변환하는 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
CUShort |
UShort 데이터 형식 | UInt16.MinValue(0) ~ UInt16.MaxValue(65,535)(부호 없음), 소수 부분은 반올림됩니다.1 Visual Basic 15.8부터 Visual Basic은 CUShort 함수를 사용하여 부동 소수점을 부호 없는 16비트 정수로 변환하는 성능을 최적화합니다. 자세한 내용은 설명 섹션을 참조하세요. 예를 보려면 CInt 예 섹션을 참조하세요. |
1 소수 부분에는 짝수로 반올림이라는 특별한 형식의 반올림이 적용될 수 있습니다. 자세한 내용은 "설명"을 참조하세요.
설명
일반적으로 Convert 클래스나 개별 형식 구조체 또는 클래스에서 ToString()
과 같은 .NET Framework 메서드보다 Visual Basic 형식 변환 함수를 우선적으로 사용해야 합니다. Visual Basic 함수는 Visual Basic 코드와의 최적의 상호 작용을 위해 설계되었으며 소스 코드를 더 짧고 읽기 쉽게 만듭니다. 또한 .NET Framework 변환 메서드는 예를 들어, Boolean
을 Integer
로 변환할 때 Visual Basic 함수와 동일한 결과를 생성하지 않을 수도 있습니다. 자세한 내용은 데이터 유형 문제 해결을 참조하세요.
Visual Basic 15.8부터 다음 메서드에서 반환된 Single 또는 Double 값을 정수 변환 함수(CByte
, CShort
, CInt
, CLng
, CSByte
, CUShort
, CUInt
, CULng
) 중 하나에 전달할 때 부동 소수점에서 정수로 변환 성능이 최적화됩니다.
- Conversion.Fix(Double)
- Conversion.Fix(Object)
- Conversion.Fix(Single)
- Conversion.Int(Double)
- Conversion.Int(Object)
- Conversion.Int(Single)
- Math.Ceiling(Double)
- Math.Floor(Double)
- Math.Round(Double)
- Math.Truncate(Double)
이러한 최적화를 통해 다수의 정수 변환을 수행하는 코드를 최대 2배 빠르게 실행할 수 있습니다. 다음 예에서는 최적화된 부동 소수점에서 정수로의 변환을 보여 줍니다.
Dim s As Single = 173.7619
Dim d As Double = s
Dim i1 As Integer = CInt(Fix(s)) ' Result: 173
Dim b1 As Byte = CByte(Int(d)) ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s)) ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d)) ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s)) ' Result: 174
동작
강제 변환. 일반적으로 데이터 형식 변환 함수를 사용하여 연산 결과를 기본 데이터 형식이 아닌 특정 데이터 형식으로 강제 변환할 수 있습니다. 예를 들어, 단정밀도, 배정밀도 또는 정수 연산이 일반적으로 수행되는 경우
CDec
를 사용하여 소수 연산을 적용합니다.실패한 변환. 함수에 전달된
expression
이 변환될 데이터 형식의 범위를 벗어나면 OverflowException이 발생합니다.소수 부분. 비정수 값을 정수 형식으로 변환하면 정수 변환 함수(
CByte
,CInt
,CLng
,CSByte
,CShort
,CUInt
,CULng
및CUShort
)는 소수 부분을 제거하고 값을 가장 가까운 정수로 반올림합니다.소수 부분이 정확히 0.5인 경우 정수 변환 함수는 이를 가장 가까운 짝수로 반올림합니다. 예를 들어, 0.5는 0으로 반올림되고, 1.5와 2.5는 모두 2로 반올림됩니다. 이를 짝수로 반올림이라고도 하며, 그 목적은 이러한 숫자를 많이 더할 때 누적될 수 있는 바이어스를 보상하는 것입니다.
CInt
및CLng
는 숫자의 소수 부분을 반올림하는 대신 잘라내는 Int 및 Fix 함수와 다릅니다. 또한Fix
및Int
는 항상 전달한 것과 동일한 데이터 형식의 값을 반환합니다.날짜/시간 변환. 값을 날짜 및 시간으로 변환할 수 있는지 확인하려면 IsDate 함수를 사용합니다.
CDate
는 날짜 리터럴과 시간 리터럴을 인식하지만 숫자 값은 인식하지 않습니다. Visual Basic 6.0Date
값을 Visual Basic 2005 이상 버전의Date
값으로 변환하려면 DateTime.FromOADate 메서드를 사용할 수 있습니다.중립 날짜/시간 값. 날짜 데이터 형식에는 항상 날짜 및 시간 정보가 모두 포함됩니다. 형식 변환을 위해 Visual Basic은 1/1/0001(1년 1월 1일)을 날짜의 중립 값 으로 간주하고 00:00:00(자정)을 해당 시간의 중립 값으로 간주합니다.
Date
값을 문자열로 변환하면CStr
은 결과 문자열에 중립 값을 포함하지 않습니다. 예를 들어,#January 1, 0001 9:30:00#
을 문자열로 변환하면 결과는 "9:30:00 AM"입니다. 날짜 정보가 표시되지 않습니다. 그러나 날짜 정보는 원래Date
값에 여전히 존재하며 DatePart 함수와 같은 함수를 사용하여 복구할 수 있습니다.문화권 민감도. 문자열과 관련된 형식 변환 함수는 애플리케이션의 현재 문화권 설정을 기반으로 변환을 수행합니다. 예를 들어,
CDate
는 시스템의 로캘 설정에 따라 날짜 형식을 인식합니다. 일, 월, 연도를 해당 로캘에 맞는 순서로 제공해야 합니다. 그렇지 않으면 날짜가 올바르게 해석되지 않을 수 있습니다. "수요일"과 같은 요일 문자열이 포함된 경우 자세한 날짜 표기 형식이 인식되지 않습니다.로캘에 지정된 형식이 아닌 형식의 값에 대한 문자열 표현으로 변환하거나 그 반대로 변환해야 하는 경우 Visual Basic 형식 변환 함수를 사용할 수 없습니다. 이렇게 하려면 해당 값 형식의
ToString(IFormatProvider)
및Parse(String, IFormatProvider)
메서드를 사용합니다. 예를 들어, 문자열을Double
로 변환할 때 Double.Parse를 사용하고,Double
형식의 값을 문자열로 변환할 때 Double.ToString을 사용합니다.
CType Function
CType 함수는 두 번째 인수인 typename
을 취하고 expression
을 typename
으로 강제 변환합니다. 여기서 typename
은 유효한 변환이 존재하는 모든 데이터 형식, 구조체, 클래스 또는 인터페이스일 수 있습니다.
CType
을 다른 형식 변환 키워드와 비교하려면 DirectCast 연산자 및 TryCast 연산자를 참조하세요.
CBool 예
다음 예에서는 CBool
함수를 사용하여 식을 Boolean
값으로 변환합니다. 식이 0이 아닌 값으로 평가되면 CBool
은 True
를 반환합니다. 그렇지 않으면 False
를 반환합니다.
Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)
C바이트 예
다음 예에서는 CByte
함수를 사용하여 식을 Byte
로 변환합니다.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
CChar 예
다음 예에서는 CChar
함수를 사용하여 String
식의 첫 번째 문자를 Char
형식으로 변환합니다.
Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)
CChar
에 대한 입력 인수는 데이터 형식이 Char
또는 String
이어야 합니다. CChar
는 숫자 데이터 형식을 허용할 수 없으므로 CChar
를 사용하여 숫자를 문자로 변환할 수 없습니다. 다음 예에서는 코드 포인트(문자 코드)를 나타내는 숫자를 가져와 해당 문자로 변환합니다. InputBox 함수를 사용하여 숫자 문자열을 가져오고, CInt
를 사용하여 문자열을 Integer
형식으로 변환하고, ChrW
를 사용하여 숫자를 Char
형식으로 변환합니다.
Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)
CDate 예
다음 예에서는 CDate
함수를 사용하여 문자열을 Date
값으로 변환합니다. 일반적으로 이 예에 표시된 대로 날짜와 시간을 문자열로 하드 코딩하는 것은 권장되지 않습니다. 대신 #Feb 12, 1969# 및 #4:45:23 PM#과 같은 날짜 리터럴과 시간 리터럴을 사용합니다.
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)
CDbl 예
Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)
CDec 예
다음 예에서는 CDec
함수를 사용하여 숫자 값을 Decimal
로 변환합니다.
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)
CInt 예
다음 예에서는 CInt
함수를 사용하여 값을 Integer
로 변환합니다.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
CLng 예
다음 예에서는 CLng
함수를 사용하여 값을 Long
으로 변환합니다.
Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)
CObj 예
다음 예에서는 CObj
함수를 사용하여 숫자 값을 Object
로 변환합니다. Object
변수 자체에는 할당된 Double
값을 가리키는 4바이트 포인터만 포함되어 있습니다.
Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)
CSByte 예
다음 예에서는 CSByte
함수를 사용하여 숫자 값을 SByte
로 변환합니다.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
CShort 예
다음 예에서는 CShort
함수를 사용하여 숫자 값을 Short
로 변환합니다.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
CSng 예
다음 예에서는 CSng
함수를 사용하여 값을 Single
으로 변환합니다.
Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)
CStr 예
다음 예에서는 CStr
함수를 사용하여 숫자 값을 String
로 변환합니다.
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)
다음 예에서는 CStr
함수를 사용하여 Date
값을 String
값으로 변환합니다.
Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)
CStr
은 항상 현재 로캘에 대한 표준 짧은 형식(예: "6/15/2003 4:35:47 PM")으로 Date
값을 렌더링합니다. 그러나 CStr
은 날짜의 경우 1/1/0001, 시간의 경우 00:00:00이라는 중립 값을 표시하지 않습니다.
CStr
에서 반환된 값에 대한 자세한 내용은 CStr 함수의 반환 값을 참조하세요.
CUnt 예
다음 예에서는 CUInt
함수를 사용하여 숫자 값을 UInteger
로 변환합니다.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng 예
다음 예에서는 CULng
함수를 사용하여 숫자 값을 ULong
로 변환합니다.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
CUShort 예
다음 예에서는 CUShort
함수를 사용하여 숫자 값을 UShort
로 변환합니다.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
참고 항목
.NET