Number 類型

2018-06-16 15:00 更新

精確地,數(shù)值類型擁有 18437736874454810627(即,264-253 +3)個值,表示為 IEEE-754 格式 64 位雙精度數(shù)值(IEEE 二進(jìn)制浮點數(shù)算術(shù)中描述了它),除了 IEEE 標(biāo)準(zhǔn)中的 9007199254740990(即,253-2)個明顯的“非數(shù)字 ”值;在 ECMAScript 中,它們被表示為一個單獨的特殊值:NaN。(請注意,NaN 值由程序表達(dá)式 NaN 產(chǎn)生,并假設(shè)執(zhí)行程序不能調(diào)整定義的全局變量 NaN。) 在某些實現(xiàn)中,外部代碼也許有能力探測出眾多非數(shù)字值之間的不同,但此類行為依賴于具體實現(xiàn);對于 ECMAScript 代碼而言,NaN 值相互之間無法區(qū)別。

 還有另外兩個特殊值,稱為正無窮和負(fù)無窮。為簡潔起見,在說明目的時,用符號 +∞ 和 -∞ 分別代表它們。(請注意,兩個無限數(shù)值由程序表達(dá)式 +Infinity(簡作Infinity) 和 -Infinity 產(chǎn)生,并假設(shè)執(zhí)行程序不能調(diào)整定義的全局變量 Infinity。)

 另外 18437736874454810624(即,264-253) 個值被稱為有限數(shù)值。其中的一半是正數(shù),另一半是負(fù)數(shù),對于每個正數(shù)而言,都有一個與之對應(yīng)的、相同規(guī)模的負(fù)數(shù)。

 請注意,還有一個 正零 和一個 負(fù)零 。為簡潔起見,類似地,在說明目的時,分別用用符號 +0 和 -0 代表這些值。(請注意,這兩個數(shù)字零由程序表達(dá)式 +0(簡作 0) 和-0 產(chǎn)生。)

 這 18437736874454810622(即,264-253-2) 個有限非零值分為兩種:

 其中 18428729675200069632(即,264-254) 個是常規(guī)值,形如

s * m * 2e

 這里的 s 是 +1 或 -1,m 是一個小于 253 但不小于 252 的正整數(shù),e 是一個閉區(qū)間 -1074 到 971 中的整數(shù)。

 剩下的 9007199254740990(即,253-2)個值是非常規(guī)的,形如

s * m * 2e

 這里的 s 是 +1 或 -1,m 是一個小于 252 的 正整數(shù),e 為 -1074

 請注意,所有規(guī)模不超過 253 的正整數(shù)和負(fù)整數(shù)都可被數(shù)值類型表示(不過,整數(shù) 0 有兩個呈現(xiàn)形式,+0 和 0)。

 如果一個有限的數(shù)值非零且用來表達(dá)它(上文兩種形式之一)的整數(shù) m 是奇數(shù),則該數(shù)值有 奇數(shù)標(biāo)記 (odd significand)。否則,它有 偶數(shù)標(biāo)記 (even significand)。

 在本規(guī)范中,當(dāng) x 表示一個精確的非零實數(shù)數(shù)學(xué)量(甚至可以是無理數(shù),比如 π)時,短語 "the number value for x" 意為,以下面的方式選擇一個數(shù)字 值??紤]數(shù)值類型的所有有限值的集合(不包括 -0 和兩個被加入在數(shù)值類型中但不可呈現(xiàn)的值,即 21024(即 +1 * 253 * 2971)和 -21024 (那是 -1 * 253 * 2971)。選擇此集合 中值最接近 x 的一員,若集合中的兩值近似相等,那么選擇有偶數(shù)標(biāo)記的那個;為此,21024 和 -21024 這兩個超額值被認(rèn)為有偶數(shù)標(biāo)記。最終,若選擇 21024 ,用 +∞替換它;若選擇 -21024 ,用 -∞替換它;若選擇 +0,有且只有 x 小于零時,用 -0 替換它;其它任何被選取的值都不用改變。結(jié)果就是 x 的數(shù)字值。(此過程正是 IEEE-754"round to nearest" 模式對應(yīng)的行為。)

 某些 ECMAScript 運算符僅涉及閉區(qū)間 -231 到 231-1 的整數(shù),或閉區(qū)間 0 到 232-1。這些運算符接受任何數(shù)值類型的值,不過,數(shù)值首先被轉(zhuǎn)換為 232 個整數(shù)值中的一個。參見ToInt32 和 ToUint32 的 描述,分別在 章節(jié) 9.5 和 9.6 中。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號