数值型数据类型 (Visual Basic)

Visual Basic 提供了数种数字数据类型来处理各种表示形式的数字。 整数类型仅表示整数(正数、负数和零),非整数类型表示含整数和小数的数字。

关于显示 Visual Basic 数据类型并排比较的表格,请参阅数据类型

整型数值类型

整数数据类型仅表示不含小数的数字。

有符号整数数据类型为 SByte 数据类型(8 位)、Short 数据类型(16 位)、Integer 数据类型(32 位) 和 Long 数据类型(64 位)。 如果变量始终存储整数而不是小数,请将其声明为这些类型之一。

无符号整数类型为 Byte 数据类型(8 位)、UShort 数据类型(16 位)、UInteger 数据类型(32 位)和 ULong 数据类型(64 位)。 如果变量包含二进制数据或未知类型的数据,请将其声明为这些类型之一。

性能

整数类型的算术运算比其他数据类型的算术运算更快。 Visual Basic 中 IntegerUInteger 类型的算术运算最快。

大整数

如果需保存超出 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 的整数。 如果有大量保存小整数的变量,使用公共语言运行时有时可以更高效地存储 ShortSByte 变量,从而节省内存占用。 但相较于 IntegerShortSByte 的算术运算要慢一些。

无符号整数

如果变量根本无需保存负数,则可以使用无符号类型 ByteUShortUIntegerULong。 其中每一种数据类型都可以保存两倍于其对应的有符号类型(SByteShortIntegerLong)可保存数值数的正整数。 在性能方面,每个无符号类型都与其对应的有符号类型一样高效。 具体来说,UIntegerInteger 都是所有基本数值数据类型中最高效的。

非整数数值类型

非整数数据类型表示含整数和小数的数字。

非整数数值数据类型是 Decimal(128 位定点)、Single 数据类型(32 位浮点)和 Double 数据类型(64 位浮点)。 它们都是有符号类型。 如果变量可以包含小数,请将其声明为这些类型之一。

Decimal 不是浮点数据类型。 Decimal 数字包含一个二进制整数值和一个整数比例因子,该比例因子用于指定该值的小数部分。

可以将 Decimal 变量用于货币值。 它的优点是值具有高精度。 Double 数据类型速度更快,需要的内存更少,但容易出现舍入错误。 Decimal 数据类型可精确到小数点后 28 位。

浮点(SingleDouble)数的范围比 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 变量,从而节省内存占用。

另请参阅