VB中的数据类型概述文档格式.docx
- 文档编号:20701297
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:36.46KB
VB中的数据类型概述文档格式.docx
《VB中的数据类型概述文档格式.docx》由会员分享,可在线阅读,更多相关《VB中的数据类型概述文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
MyChar=Chr(37)'
返回%。
(4)MyNumber=Asc("
Apple"
返回65。
MyNumber=Asc("
a"
返回97。
VB的转换函数包括:
CBool转换为Boolean类型
CByte转换为Byte类型
CCur转换为Currency类型
CDate转换为Date类型
CDbl转换为Double类型
CInt转换为Integer类型
CLng转换为Long类型
CSng转换为Single类型
CStr转换为String类型
CVar转换为Variant类型
CVErr转换为Error类型
数字数据类型
VisualStudio2005
其他版本
∙VisualStudio2010
∙VisualStudio2008
∙VisualStudio2012
1(共1)对本文的评价是有帮助-评价此主题
VisualBasic提供了几种“数值数据类型”,以各种表示形式来处理数字。
“整型”仅表示整数(正数、负数和零);
“非整型”表示同时带有整数部分和小数部分的数字。
有关VisualBasic数据类型的对照表,请参见数据类型摘要(VisualBasic)。
整型数值类型
“整型数据类型”是只表示整数(没有小数部分)的数据类型。
“有符号”整型数据类型有SByte数据类型(VisualBasic)(8位)、Short数据类型(VisualBasic)(16位)、Integer数据类型(VisualBasic)(32位)及Long数据类型(VisualBasic)(64位)。
如果某个变量总是存储整数而不是小数,则将其声明为以上类型之一。
“无符号”整型有Byte数据类型(VisualBasic)(8位)、UShort数据类型(VisualBasic)(16位)、UInteger数据类型(32位)及ULong数据类型(VisualBasic)(64位)。
如果某个变量包含二进制数据或未知种类的数据,则将其声明为这些类型之一。
性能
用整型进行算术运算比用其他数据类型快。
VisualBasic中的Integer和UInteger类型的算术运算速度最快。
大整数
如果您需要存储的整数比Integer数据类型所能存储的要大,可用Long数据类型代替。
Long变量可以存储从-9,223,372,036,854,775,808到9,223,372,036,854,775,807的数字。
Long的运算速度比Integer稍微慢一些。
如果需要更大的值,可以使用Decimal数据类型(VisualBasic)。
如果不使用任何小数位数,Decimal变量可存储从-79,228,162,514,264,337,593,543,950,335到79,228,162,514,264,337,593,543,950,335的数字。
但是,Decimal数字的运算速度比其他任何数值数据类型慢得多。
小整数
如果不需要全面的Integer数据类型,可以使用Short数据类型,它包含从-32,768到32,767的整数。
SByte数据类型包含从-128到127的最小整数范围。
如果有大量的变量包含小整数,公共语言运行库有时可以更加有效地存储Short和SByte变量以节省内存使用。
但是,Short和SByte的运算速度比Integer稍慢一些。
无符号整数
如果您知道您的变量永远不需要存储负数,可以使用“无符号类型”Byte、UShort、UInteger和ULong。
这些数据类型所能存储的正整数是相应的有符号类型(SByte、Short、Integer和Long)的两倍。
就性能而言,每个无符号类型与相应的有符号类型的效率一样。
特别是,UInteger与Integer都被认为是所有基本数值数据类型中最高效的。
非整型数值类型
“非整型数据类型”是表示同时带有整数部分和小数部分的数字的类型。
非整型数值数据类型有Decimal(128位定点)、Single数据类型(VisualBasic)(32位浮点)和Double数据类型(VisualBasic)(64位浮点)。
它们都是有符号类型。
如果某个变量可以包含小数,则将其声明为这些类型之一。
Decimal不是浮点数据类型。
Decimal数字具有一个二进制整数值,和一个整数比例因子,用于指定值的哪一部分是小数部分。
浮点(Single和Double)数字的范围比Decimal数字大,但可能会导致四舍五入错误。
浮点类型支持的有效位比Decimal支持的少,但它可以表示更大的值。
非整型数值可表示为mmmEeee,其中mmm是“尾数”(有效位数),eee是“指数”(10的次幂)。
在非整型中,Decimal的最大正值为7.E+28,Single的最大正值为3.E+38,Double的最大正值为1.E+308。
Double是小数数据类型中效率最高的,因为目前各平台的处理器都是以双精度来进行浮点运算。
但是,使用Double的运算不如使用整型(如Integer)的运算速度快。
小量值
对于具有最小可能量值的数字(最接近0),Double变量可以存储最小-4.E-324的负值和最大4.E-324的正值。
小小数
如果不需要全面的Double数据类型,可以使用Single数据类型,它可以存储从-3.E+38到3.E+38的浮点数字。
Single变量的负值最小量值为-1.E-45,正值最小量值为1.E-45。
如果有大量的变量存储小浮点数,公共语言运行库有时可以更加高效地存储Single变量以节省内存使用。
字符数据类型
此主题尚未评级-评价此主题
VisualBasic提供了“字符数据类型”来处理可打印和可显示的字符。
虽然Char和String都处理Unicode字符,但前者存储单个字符,而后者存储任意个数的字符。
Char类型
Char数据类型是单个双字节(16位)Unicode字符。
如果一个变量总是仅存储一个字符,则将其声明为Char。
有关更多信息,请参见Char数据类型(VisualBasic)。
字符串类型
String数据类型是零个或更多个双字节(16位)Unicode字符的序列。
如果一个变量可以包含任意个数的字符,则将其声明为String。
有关更多信息,请参见String数据类型(VisualBasic)。
其他数据类型
VisualBasic提供了几种不是面向数字或字符的数据类型。
它们处理特殊的数据,如是/否值、日期/时间值、对象地址等。
布尔型
Boolean数据类型(VisualBasic)是一个无符号值,该值被解释为True或False。
其数据宽度取决于实现平台。
如果一个变量仅包含像真/假、是/否或开/关这样的双状态值,则将其声明为Boolean。
日期类型
Date数据类型(VisualBasic)是一个存储日期和时间信息的64位值。
每个增量表示从公历第1年的1月1号(12:
00AM)开始经过的100毫微秒时间。
如果变量可以包含日期值、时间值或两者,则将其声明为Date。
对象类型
Object数据类型是一个指向您的应用程序或其他某个应用程序中的对象实例的32位地址。
Object变量可以引用您的应用程序识别的任何对象或任何数据类型的数据。
如果一个变量存储指向某个类实例的指针,而您在编译时不知道该类,或者如果该指针可以指向各种数据类型的数据,则请将其声明为Object。
数据类型的疑难解答
本页列出一些可能会在您执行有关内部数据类型的操作时出现的常见问题。
比较浮点表达式时不能获得等值结果
在使用浮点数(Single数据类型(VisualBasic)和Double数据类型(VisualBasic))时,请记住,它们作为二进位分式存储。
这就意味着,对于任何非二进位分式(形式为k
/
(2
^
n,其中k和n均为整数)的数量,浮点数无法保存它们的精确表示形式。
例如,0.5(=1/2)和0.3125(=5/16)可保存为精确的值,而0.2(=1/5)和0.3(=3/10)只能是近似值。
由于这一不精确性,因此,在处理浮点值时,不能指望会获得精确的结果。
具体而言,理论上相等的两个值可能会具有略微不同的表示形式。
比较浮点数量
1.使用System命名空间中的Math类的Abs方法,计算各数量之间的差值的绝对值。
2.确定可接受的最大差值,这样一来,如果两个数量之间的差值不超过此值,则可以认为这两个数量实际上是相等的。
3.将差值的绝对值与可接受的差值进行比较。
下面的示例演示有关两个Double值的正确和错误的比较。
VB
复制
DimoneThirdAsDouble=1.0/3.0
DimpointThreesAsDouble=0.3333
'
Thefollowingcomparisondoesnotindicateequality.
DimexactlyEqualAsBoolean=(oneThird=pointThrees)
Thefollowingcomparisonindicatesequality.
DimcloseEnoughAsDouble=0.0001
DimabsoluteDifferenceAsDouble=Math.Abs(oneThird-pointThrees)
DimpracticallyEqualAsBoolean=(absoluteDifference<
closeEnough)
MsgBox("
1.0/3.0isrepresentedas"
&
oneThird.ToString("
G17"
)_
vbCrLf&
"
0.3333isrepresentedas"
_
pointThrees.ToString("
Exactcomparisongenerates"
CStr(exactlyEqual)_
Acceptabledifferencecomparisongenerates"
CStr(practicallyEqual))
上面的示例使用了Double结构的ToString方法,因此,它可以指定比在使用CStr关键字时更高的精度。
默认精度是15位数字,但“G17”格式将其扩展到17位数字。
Mod运算符未返回准确的结果
由于浮点存储的不精确性,如果至少一个操作数为浮点数,Mod运算符(VisualBasic)可能会返回意外的结果。
Decimal数据类型(VisualBasic)不使用浮点表示形式。
在Single和Double中不精确的许多数字在Decimal中是精确的数字(例如0.2和0.3)。
虽然浮点表示形式在算术运算速度上比Decimal表示形式快,但可能值得用性能的下降换回精度的提高。
找出浮点数量的整数余数
1.将变量声明为Decimal。
2.使用文本类型字符D将文本强制转换为Decimal,以防文本的值相对于Long数据类型太大。
下面的示例演示了浮点操作数潜在的不精确性。
DimtwoAsDouble=2.0
DimzeroPointTwoAsDouble=0.2
DimquotientAsDouble=two/zeroPointTwo
DimdoubleRemainderAsDouble=twoModzeroPointTwo
2.0isrepresentedas"
two.ToString("
0.2isrepresentedas"
zeroPointTwo.ToString("
2.0/0.2generates"
quotient.ToString("
2.0Mod0.2generates"
doubleRemainder.ToString("
))
DimdecimalRemainderAsDecimal=2DMod0.2D
2.0DMod0.2Dgenerates"
CStr(decimalRemainder))
由于zeroPointTwo是Double,因此,它表示的0.2这个值是一个无限重复的二进位分式(存储的值是0.)。
将2.0除以此数量将得到9.99995,余数为0.。
在decimalRemainder的表达式中,文本类型字符D将两个操作数均强制转换为Decimal,这样0.2将具有精确的表示形式。
因此,Mod运算符将得到预期的余数0.0。
请注意,将decimalRemainder声明为Decimal还不够。
您还必须将文本强制转换为Decimal,否则它们将默认为Double,而且decimalRemainder将与doubleRemainder一样均收到不准确的值。
Boolean类型不能准确地转换为数值类型
Boolean数据类型(VisualBasic)值并非作为数字存储,而且存储的值并未有意与数字相当。
为了与早期版本兼容,VisualBasic提供了用于在Boolean和数值类型之间转换的转换关键字(CType函数、CBool、CInt等)。
但是,其他语言有时会以不同的方式执行这些转换,就像.NETFramework方法一样。
绝不应编写依赖于True和False的等效数值的代码。
只要有可能,就应当限定将Boolean变量作为逻辑值使用,这也是设计Boolean变量的目的所在。
如果必须将Boolean和数值混合在一起,请确保您了解所选的转换方法。
VisualBasic中的转换
在使用CType或CBool转换关键字将数值数据类型转换为Boolean,0会变为False,而所有其他值会变为True。
在使用转换关键字将Boolean值转换为数值类型时,False会变为0,而True会变为-1。
框架中的转换
System命名空间中的Convert类的ToInt32方法将True转换为+1。
如果需要将Boolean值转换为一个数值数据类型,请注意所使用的转换方法。
字符文本产生编译器错误
如果缺少任何类型字符,则VisualBasic会对文本使用默认数据类型。
字符文本的默认类型(用双引号"
引起来)是String。
String数据类型不会扩大到Char数据类型(VisualBasic)。
这意味着,如果想向Char变量分配文本,则必须进行收缩转换,或将文本强制转换为Char类型。
创建赋给变量或常数的Char文本
1.将变量或常数声明为Char。
2.将字符值用双引号("
)引起来。
3.在结尾的双引号后面紧接文本类型字符C,以便将文本强制转换为Char。
这在类型检查开关(OptionStrict语句)为On时是必需的,而且希望在任何情况下都这样做。
下面的示例演示了将文本赋予Char变量的成功的赋值操作和不成功的赋值操作。
OptionStrictOn
DimcharVarAsChar
ThefollowingstatementattemptstoconvertaStringliteraltoChar.
BecauseOptionStrictisOn,itgeneratesacompilererror.
charVar="
Z"
ThefollowingstatementsucceedsbecauseitspecifiesaCharliteral.
c
ThefollowingstatementsucceedsbecauseitconvertsStringtoChar.
charVar=CChar("
)
在使用收缩转换时往往会有风险,原因是它们可能会在运行时失败。
例如,如果String值包含多个字符,则从String到Char的转换可能会失败。
因此,在编程时最好使用C类型字符。
字符串转换在运行时失败
String数据类型(VisualBasic)只参与非常少的扩大转换。
String只扩大到自身和Object,并且只有Char和Char()(Char数组)会扩大到String。
这是因为String变量和常数可以包含其他数据类型无法容纳的值。
在类型检查开关(OptionStrict语句)为On时,编译器不允许任何的隐式收缩转换,包括涉及到String的转换。
代码仍可以使用转换关键字(如CStr和CType函数),以指示.NETFramework尝试进行转换。
收缩转换保护
收缩转换的缺点是它们可能会在运行时失败。
例如,如果String变量包含有除“True”或“False”外的任何内容,则无法将它转换为Boolean。
如果它包含标点字符,则将它转换为任何数值类型时都会失败。
除非您知道String变量始终保存的是目标类型可以接受的值,否则不应尝试进行转换。
如果需要从String转换到另一种数据类型,则最安全的做法是将尝试进行的转换放入Try...Catch...Finally语句(VisualBasic)中。
这使您能解决运行时失败问题。
字符数组
单个Char和Char元素数组均扩大到String。
但是,String不会扩大到Char()。
要将String值转换为Char数组,可以使用System.String类的ToCharArray方法。
无意义的值
通常,String值在其他数据类型中并无意义,因此,转换在很大程度上是不可信的并且很危险。
只要有可能,就应当限定将String变量作为字符序列使用,这也是设计这些变量的目的所在。
绝不应编写依赖其他类型中的等效值的代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 中的 数据类型 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)