数值型数据类型 (Visual Basic)
Visual Basic 提供了数种数字数据类型来处理各种表示形式的数字。 整数类型仅表示整数(正数、负数和零),非整数类型表示含整数和小数的数字。
关于显示 Visual Basic 数据类型并排比较的表格,请参阅数据类型。
整型数值类型
整数数据类型仅表示不含小数的数字。
有符号整数数据类型为 SByte 数据类型(8 位)、Short 数据类型(16 位)、Integer 数据类型(32 位) 和 Long 数据类型(64 位)。 如果变量始终存储整数而不是小数,请将其声明为这些类型之一。
无符号整数类型为 Byte 数据类型(8 位)、UShort 数据类型(16 位)、UInteger 数据类型(32 位)和 ULong 数据类型(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
变量可以保存从 -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
变量,从而节省内存占用。 但相较于 Integer
,Short
和 SByte
的算术运算要慢一些。
无符号整数
如果变量根本无需保存负数,则可以使用无符号类型 Byte
、UShort
、UInteger
和 ULong
。 其中每一种数据类型都可以保存两倍于其对应的有符号类型(SByte
、Short
、Integer
和 Long
)可保存数值数的正整数。 在性能方面,每个无符号类型都与其对应的有符号类型一样高效。 具体来说,UInteger
和 Integer
都是所有基本数值数据类型中最高效的。
非整数数值类型
非整数数据类型表示含整数和小数的数字。
非整数数值数据类型是 Decimal
(128 位定点)、Single 数据类型(32 位浮点)和 Double 数据类型(64 位浮点)。 它们都是有符号类型。 如果变量可以包含小数,请将其声明为这些类型之一。
Decimal
不是浮点数据类型。 Decimal
数字包含一个二进制整数值和一个整数比例因子,该比例因子用于指定该值的小数部分。
可以将 Decimal
变量用于货币值。 它的优点是值具有高精度。 Double
数据类型速度更快,需要的内存更少,但容易出现舍入错误。 Decimal
数据类型可精确到小数点后 28 位。
浮点(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
变量,从而节省内存占用。