Number 类型

2018-06-16 15:00 更新

精确地,数值类型拥有 18437736874454810627(即,264-253 +3)个值,表示为 IEEE-754 格式 64 位双精度数值(IEEE 二进制浮点数算术中描述了它),除了 IEEE 标准中的 9007199254740990(即,253-2)个明显的“非数字 ”值;在 ECMAScript 中,它们被表示为一个单独的特殊值:NaN。(请注意,NaN 值由程序表达式 NaN 产生,并假设执行程序不能调整定义的全局变量 NaN。) 在某些实现中,外部代码也许有能力探测出众多非数字值之间的不同,但此类行为依赖于具体实现;对于 ECMAScript 代码而言,NaN 值相互之间无法区别。

 还有另外两个特殊值,称为正无穷和负无穷。为简洁起见,在说明目的时,用符号 +∞ 和 -∞ 分别代表它们。(请注意,两个无限数值由程序表达式 +Infinity(简作Infinity) 和 -Infinity 产生,并假设执行程序不能调整定义的全局变量 Infinity。)

 另外 18437736874454810624(即,264-253) 个值被称为有限数值。其中的一半是正数,另一半是负数,对于每个正数而言,都有一个与之对应的、相同规模的负数。

 请注意,还有一个 正零 和一个 负零 。为简洁起见,类似地,在说明目的时,分别用用符号 +0 和 -0 代表这些值。(请注意,这两个数字零由程序表达式 +0(简作 0) 和-0 产生。)

 这 18437736874454810622(即,264-253-2) 个有限非零值分为两种:

 其中 18428729675200069632(即,264-254) 个是常规值,形如

s * m * 2e

 这里的 s 是 +1 或 -1,m 是一个小于 253 但不小于 252 的正整数,e 是一个闭区间 -1074 到 971 中的整数。

 剩下的 9007199254740990(即,253-2)个值是非常规的,形如

s * m * 2e

 这里的 s 是 +1 或 -1,m 是一个小于 252 的 正整数,e 为 -1074

 请注意,所有规模不超过 253 的正整数和负整数都可被数值类型表示(不过,整数 0 有两个呈现形式,+0 和 0)。

 如果一个有限的数值非零且用来表达它(上文两种形式之一)的整数 m 是奇数,则该数值有 奇数标记 (odd significand)。否则,它有 偶数标记 (even significand)。

 在本规范中,当 x 表示一个精确的非零实数数学量(甚至可以是无理数,比如 π)时,短语 "the number value for x" 意为,以下面的方式选择一个数字 值。考虑数值类型的所有有限值的集合(不包括 -0 和两个被加入在数值类型中但不可呈现的值,即 21024(即 +1 * 253 * 2971)和 -21024 (那是 -1 * 253 * 2971)。选择此集合 中值最接近 x 的一员,若集合中的两值近似相等,那么选择有偶数标记的那个;为此,21024 和 -21024 这两个超额值被认为有偶数标记。最终,若选择 21024 ,用 +∞替换它;若选择 -21024 ,用 -∞替换它;若选择 +0,有且只有 x 小于零时,用 -0 替换它;其它任何被选取的值都不用改变。结果就是 x 的数字值。(此过程正是 IEEE-754"round to nearest" 模式对应的行为。)

 某些 ECMAScript 运算符仅涉及闭区间 -231 到 231-1 的整数,或闭区间 0 到 232-1。这些运算符接受任何数值类型的值,不过,数值首先被转换为 232 个整数值中的一个。参见ToInt32 和 ToUint32 的 描述,分别在 章节 9.5 和 9.6 中。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号