Bagikan melalui


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):

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, CULngdan CUShort) 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 dan CLng berbeda dari fungsi Int dan Fix, yang memotong, bukan membulatkan, bagian pecahan dari angka. Selain itu, Fix dan Int 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.0 Date menjadi nilai Date 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 asli Date 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) dan Parse(String, IFormatProvider) dari jenis nilai tersebut. Misalnya, gunakan Double.Parse saat mengonversi string menjadi Double, dan gunakan Double.ToString saat mengonversi nilai jenis Double 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