数值型数据
在 JScript 中,两种数值数据类型(整型数据和浮点数据)之间的选择取决于使用它们的特定环境。 对整型数据和浮点数据的表示也有不同的方式。
正整数、负整数和数字零都是整数。 它们可通过以 10 为基数(十进制)、以 8 为基数(八进制)和以 16 为基数(十六进制)来表示。 JScript 中的大多数数字是十进制的。 通过在整数前面加前导 0(零)来表示八进制整数。 八进制整数只包含 0 到 7 的数字。 前面有 0 而包含数字 8 和/或 9 的数字将被解释为十进制数字。 一般不推荐使用八进制数字。
通过在整数前面加前导“0x”(零和 x|X)来表示十六进制 (hex) 整数。 字母 A 到 F 以单个数字的形式表示以 10 为基数的 10 到 15。 字母 A 到 F 以单个数字的形式表示以 10 为基数的 10 到 15。 即,0xF 相当于 15,0x10 相当于 16。
八进制和十六进制数字都可以是负值,但不能有小数部分,也不能写成科学(指数)计数法。
浮点值是带有小数部分的整数。 像整数一样,可以用数字后跟小数点和更多数字的形式来表示浮点值。 此外,还可以用科学计数法来表示它们。 即,使用大写或小写字母 e 来表示“10 的幂”。 以单个 0 开头并包含小数点的数字被解释为十进制浮点标识符而不是八进制标识符。
另外,JScript 中的浮点数字可以表示整型数据类型所不能表示的特殊数值。 这些是:
NaN(不是数字)。 当对不适当的数据(比如字符串或未定义值)执行数学运算时使用该值。
Infinity。 当一个正数太大以至于在 JScript 中无法表示时使用该值。
-Infinity(负无穷大)当一个负数的数值太大以至于在 JScript 中无法表示时使用此值。
正 0 和负 0。 JScript 在某些条件下会区分正的零和负的零。
下面是 JScript 数字的一些示例。 注意,以“0x”开头并包含小数点的数字将生成错误。
Number |
说明 |
等效十进制数字 |
---|---|---|
.0001、0.0001、1e-4、1.0e-4 |
四个等效的浮点数字。 |
0.0001 |
3.45e2 |
浮点数。 |
345 |
42 |
一个 Integer。 |
42 |
0378 |
一个 Integer。 虽然此值看上去像一个八进制数字(因为以零开头),但 8 不是有效的八进制数字,因此将被视为十进制数字。 这将产生 1 级警告。 |
378 |
0377 |
一个八进制整数。 注意,虽然它看上去只比上面那个数字小 1,但它们的实际值相差甚远。 |
255 |
0.0001, 00.0001 |
一个浮点数字。 即使此值以零开头,它也不是八进制数字,因为它有小数点。 |
0.0001 |
0Xff |
十六进制整数。 |
255 |
0x37CF |
十六进制整数。 |
14287 |
0x3e7 |
十六进制整数。 注意,字母 e 不被视为幂。 |
999 |
0x3.45e2 |
这是一个错误。 十六进制数字不能有小数部分。 |
N/A(编译器错误) |
任何整型数据类型的变量只能表示一个有限范围的数字。 如果尝试将过大或过小的数值标识符分配给整型数据类型,将会在编译时生成类型不匹配错误。 有关更多信息,请参见 数据类型摘要。
标识符的数据类型
在大多数情况下,JScript 解释数值标识符的数据类型都是无关紧要的。 但是,当数字很大或非常精确时,这些细节就很重要了。
根据其标识符大小及其使用情况,JScript 中的整数标识符可表示 int、long、ulong、decimal 或 double 类型的数据。 在 int 类型范围(-2147483648 到 2147483647)内的标识符将会解释为 int 类型。 在该范围以外但在 long 类型范围以内(-9223372036854775808 到 9223372036854775807)的标识符将解释为 long。 该范围以外但 ulong 类型范围以内(9223372036854775807 至 18446744073709551615)的标识符解释为 ulong。 其他所有整数标识符被解释为 double 类型,它必然伴有精度的降低。 以上规则的例外情况是:如果标识符直接存储在类型为 decimal 的变量或常数中,或者如果标识符传递给接受类型为 decimal 的函数,则该标识符被解释为 decimal。
JScript 浮点标识符被解释为 double 数据类型,除非该标识符直接用作 decimal(如整数标识符),在后一种情况下,该标识符被解释为 decimal。 decimal 数据类型不能表示 NaN、正 Infinity 或负 Infinity。