Fungsi Konversi Jenis (Visual Basic)
Fungsi-fungsi ini dikompilasi sebaris, artinya kode konversi adalah bagian dari kode yang mengevaluasi ekspresi. Terkadang tidak ada panggilan ke prosedur untuk menyelesaikan konversi, yang meningkatkan performa. Setiap fungsi memaksa ekspresi ke jenis data tertentu.
Sintaks
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)
Bagian
expression
Harus diisi. Ekspresi apa pun dari jenis data sumber.
Jenis Data Nilai Kembalian
Nama fungsi menentukan jenis data nilai yang dikembalikannya, seperti tampak dalam tabel berikut.
Nama fungsi | Jenis data kembalian | Kisaran untuk argumen expression |
---|---|---|
CBool |
Jenis Data Boolean | Char atau String yang valid atau ekspresi numerik apa pun. |
CByte |
Jenis Data Byte | Byte.MinValue (0) hingga Byte.MaxValue (255) (tidak ditandatangani); bagian pecahan dibulatkan. 1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke byte dengan fungsi CByte ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CChar |
Jenis Data Karakter | Ekspresi valid Char atau String apa pun; hanya karakter pertama dari String yang dikonversi; nilai bisa 0 hingga 65535 (tidak ditandatangani). |
CDate |
Jenis Data Tanggal | Representasi tanggal dan waktu apa pun yang valid. |
CDbl |
Jenis Data Ganda | -1.79769313486231570E+308 hingga -4.94065645841246544E-324 untuk nilai negatif; 4.94065645841246544E-324 hingga 1.79769313486231570E+308 untuk nilai positif. |
CDec |
Jenis Data Desimal | +/-79,228,162,514,264,337,593,543,950,335 untuk angka tanpa skala-nol, yaitu angka tanpa tempat desimal. Untuk angka dengan 28 tempat desimal, rentangnya adalah +/-7.9228162514264337593543950335. Angka non-nol terkecil yang mungkin adalah 0,0000000000000000000000000001 (+/-1E-28). |
CInt |
Jenis Data Bilangan Bulat | Int32.MinValue (-2.147.483.648) hingga Int32.MaxValue (2.147.483.647); bagian pecahan dibulatkan. 1 Dimulai dar Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat dengan fungsi CInt ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CLng |
Jenis Data Panjang | Int64.MinValue (-9.223.372.036.854.775.808) hingga Int64.MaxValue (9.223.372.036.854.775.807); bagian pecahan dibulatkan. 1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi bilangan bulat floating-point ke 64-bit dengan fungsi CLng ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CObj |
Jenis Data Objek | Semua ekspresi yang valid. |
CSByte |
Jenis Data SByte | SByte.MinValue (-128) hingga SByte.MaxValue (127); bagian pecahan dibulatkan.1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke byte yang ditandatangani dengan fungsi CSByte ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CShort |
Jenis Data Pendek | Int16.MinValue (-32,768) hingga Int16.MaxValue (32,767); bagian pecahan dibulatkan.1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat 16-bit dengan fungsi CShort ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CSng |
Jenis Data Tunggal | -3.402823E+38 hingga-1.401298E-45 untuk nilai negatif; 1.401298E-45 hingga 3.402823E+38 untuk nilai positif. |
CStr |
Jenis Data String | Kembalian untuk CStr bergantung pada argumen expression . Lihat Mengembalikan Nilai untuk Fungsi CStr. |
CUInt |
Jenis Data UInteger | UInt32.MinValue (0) hingga UInt32.MaxValue (4,294,967,295) (tidak ditandatangani); bagian pecahan dibulatkan.1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat yang tidak ditandatangani dengan fungsi CUInt ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CULng |
Jenis Data ULong | UInt64.MinValue (0) hingga UInt64.MaxValue (18,446,744,073,709,551,615) (tidak ditandatangani); bagian pecahan dibulatkan.1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat panjang yang tidak ditandatangani dengan fungsi CULng ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
CUShort |
Jenis Data UShort | UInt16.MinValue (0) hingga UInt16.MaxValue (65,535)(tidak ditandatangani); bagian pecahan dibulatkan.1 Dimulai dari Visual Basic 15.8, Visual Basic mengoptimalkan performa konversi floating-point ke bilangan bulat 16-bit yang tidak ditandatangani dengan fungsi CUShort ; lihat bagian Keterangan untuk informasi selengkapnya. Lihat bagian Contoh CInt sebagai contoh. |
1 Bagian pecahan dapat tunduk pada jenis pembulatan khusus yang disebut pembulatan bankir. Lihat “Keterangan” untuk informasi selengkapnya.
Keterangan
Biasanya, Anda harus menggunakan fungsi konversi jenis Visual Basic di preferensi metode .NET Framework seperti ToString()
, baik di kelas Convert atau pun pada struktur atau kelas jenis individual. Fungsi Visual Basic dirancang untuk interaksi optimal dengan kode Visual Basic, dan juga membuat kode sumber Anda lebih pendek dan lebih mudah dibaca. Selain itu, metode konversi .NET Framework tidak selalu menghasilkan hasil yang sama dengan fungsi Visual Basic, misalnya saat mengonversi Boolean
ke Integer
. Untuk informasi selengkapnya, lihat Pemecahan Masalah Jenis Data.
Dimulai dari Visual Basic 15.8, performa konversi floating-point-to-integer dioptimalkan ketika Anda meneruskan nilai Single atau Double yang dikembalikan oleh metode berikut ke salah satu fungsi konversi bilangan bulat (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)
Pengoptimalan ini memungkinkan kode yang melakukan sejumlah besar konversi bilangan bulat untuk berjalan dua kali lebih cepat. Contoh berikut mengilustrasikan konversi floating-point-to-integer yang dioptimalkan:
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
Perilaku
Pemaksaan Secara umum, Anda dapat menggunakan fungsi konversi jenis data untuk memaksa hasil operasi ke dalam jenis data tertentu, bukan jenis data default. Misalnya, gunakan
CDec
untuk memaksa aritmetika desimal dalam kasus di mana presisi tunggal, presisi ganda, atau aritmatika bilangan bulat biasanya akan terjadi.Konversi Gagal. Jika
expression
diteruskan ke fungsi berada di luar rentang jenis data yang akan dikonversi, maka OverflowException akan terjadi.Bagian Pecahan. Saat Anda mengonversi nilai nonintegral ke jenis integral, fungsi konversi bilangan bulat (
CByte
,CInt
,CLng
,CSByte
,CShort
,CUInt
,CULng
danCUShort
) menghapus bagian pecahan dan membulatkan nilainya ke bilangan bulat terdekat.Jika bagian pecahan tepat 0,5, fungsi konversi bilangan bulat membulatkannya ke bilangan bulat genap terdekat. Misalnya, 0,5 dibulatkan ke 0, dan 1,5 dan 2,5 dibulatkan ke 2. Pembulatan ini kadang disebut pembulatan bankir, dan tujuannya adalah untuk mengimbangi bias yang dapat terakumulasi ketika menambahkan banyak angka tersebut bersama-sama.
CInt
danCLng
berbeda dari fungsi Int dan Fix, yang memotong, bukan membulatkan, bagian pecahan dari angka. Selain itu,Fix
danInt
selalu mengembalikan nilai jenis data yang sama saat Anda meneruskan.Konversi Tanggal/Waktu. Gunakan fungsi IsDate untuk menentukan apakah suatu nilai dapat dikonversi ke tanggal dan waktu.
CDate
mengenali harfiah tanggal dan literal waktu tetapi tidak mengenali nilai numerik. Untuk mengonversi nilai Visual Basic 6.0Date
menjadi nilaiDate
di Visual Basic 2005 atau versi yang lebih baru, Anda dapat menggunakan metode DateTime.FromOADate.Nilai Tanggal/Waktu Netral. Jenis Data Tanggal selalu berisi informasi tanggal dan waktu. Untuk tujuan konversi jenis, Visual Basic menganggap 1/1/0001 (1 Januari tahun 1) menjadi nilai netral untuk tanggal tersebut, dan 00:00:00 (tengah malam) menjadi nilai netral untuk saat itu. Jika Anda mengonversi nilai
Date
menjadi string,CStr
tidak menyertakan nilai netral dalam string yang dihasilkan. Misalnya, jika Anda mengonversi#January 1, 0001 9:30:00#
ke string, hasilnya adalah "9:30:00 AM"; informasi tanggal ditiadakan. Namun, informasi tanggal masih ada dalam nilai asliDate
dan dapat dipulihkan dengan fungsi seperti DatePart.Sensitivitas Budaya. Fungsi konversi jenis yang melibatkan string melakukan konversi berdasarkan pengaturan budaya saat ini untuk aplikasi. Misalnya,
CDate
mengenali format tanggal sesuai dengan pengaturan lokal sistem Anda. Anda harus memberikan hari, bulan, dan tahun dalam urutan yang benar untuk lokal Anda, bila tidak tanggal mungkin akan ditafsirkan secara keliru. Format tanggal panjang tidak dikenali jika berisi string hari dalam seminggu, seperti "Rabu".Jika Anda perlu mengonversi ke atau dari representasi string nilai dalam format selain yang ditentukan oleh lokal Anda, Anda tidak dapat menggunakan fungsi konversi jenis Visual Basic. Untuk melakukan ini, gunakan metode
ToString(IFormatProvider)
danParse(String, IFormatProvider)
dari jenis nilai tersebut. Misalnya, gunakan Double.Parse saat mengonversi string menjadiDouble
, dan gunakan Double.ToString saat mengonversi nilai jenisDouble
menjadi string.
Fungsi CType
Fungsi CType mengambil argumen kedua, typename
, dan memaksa expression
ke typename
, di mana typename
dapat berupa jenis data, struktur, kelas, atau antarmuka apa pun yang menghasilkan konversi yang valid.
Untuk perbandingan CType
dengan kata kunci konversi jenis lainnya, lihat Operator DirectCast dan Operator TryCast.
Contoh CBool
Contoh berikut menggunakan fungsi CBool
untuk mengonversi ekspresi menjadi nilai Boolean
. Jika ekspresi mengevaluasi ke nilai bukan nol, CBool
mengembalikan True
; jika tidak, ekspresi akan mengembalikan 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)
Contoh CByte
Contoh berikut menggunakan fungsi CByte
untuk mengonversi ekspresi ke Byte
.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
Contoh CChar
Contoh berikut menggunakan fungsi CChar
untuk mengonversi karakter pertama dari ekspresi String
menjadi jenis 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)
Argumen input ke CChar
harus berjenis data Char
atau String
. Anda tidak dapat menggunakan CChar
untuk mengonversi angka menjadi karakter, karena CChar
tidak dapat menerima tipe data angka. Contoh berikut mendapatkan angka yang mewakili titik kode (kode karakter) dan mengonversinya ke karakter yang sesuai. Contoh tersebut menggunakan fungsi InputBox untuk mendapatkan string digit, CInt
untuk mengonversi string menjadi jenis Integer
, dan ChrW
untuk mengonversi angka menjadi jenis 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)
Contoh CDate
Contoh berikut menggunakan fungsi CDate
untuk mengonversi nilai Date
. Secara umum, tanggal dan waktu pengodean keras sebagai string (seperti yang ditunjukkan dalam contoh ini) tidak disarankan. Gunakan harfiah tanggal dan literal waktu, seperti #Feb 12, 1969# dan #4:45:23 PM#, sebagai gantinya.
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)
Contoh 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)
Contoh CDec
Contoh berikut menggunakan fungsi CDec
untuk mengonversi nilai angka menjadi 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)
Contoh CInt
Contoh berikut menggunakan fungsi CInt
untuk mengonversi nilai menjadi Integer
.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
Contoh CLng
Contoh berikut menggunakan fungsi CLng
untuk mengonversi nilai menjadi 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)
Contoh CObj
Contoh berikut menggunakan fungsi CObj
untuk mengonversi nilai angka menjadi Object
. Variabel Object
itu sendiri hanya berisi penunjuk empat-byte, yang menunjuk ke nilai yang Double
ditetapkan padanya.
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)
Contoh CSByte
Contoh berikut menggunakan fungsi CSByte
untuk mengonversi nilai angka menjadi SByte
.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
Contoh CShort
Contoh berikut menggunakan fungsi CShort
untuk mengonversi nilai angka menjadi Short
.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
Contoh CSng
Contoh berikut menggunakan fungsi CSng
untuk mengonversi nilai menjadi 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)
Contoh CStr
Contoh berikut menggunakan fungsi CStr
untuk mengonversi nilai angka menjadi 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)
Contoh berikut menggunakan fungsi CStr
untuk mengonversi nilai Date
menjadi nilai 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
selalu menerjemahkan nilai Date
dalam format pendek standar untuk lokal saat ini, misalnya, "15/6/2003 4:35:47 PM". Namun, CStr
menekan nilai netral dari 1/1/0001 untuk tanggal dan 00:00:00 untuk waktu tersebut.
Untuk detail selengkapnya tentang nilai yang dikembalikan oleh CStr
, lihat Mengembalikan Nilai untuk Fungsi CStr.
Contoh CUInt
Contoh berikut menggunakan fungsi CUInt
untuk mengonversi nilai angka menjadi UInteger
.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
Contoh CULng
Contoh berikut menggunakan fungsi CULng
untuk mengonversi nilai angka menjadi ULong
.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
Contoh CUShort
Contoh berikut menggunakan fungsi CUShort
untuk mengonversi nilai angka menjadi UShort
.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk