ToString

2018-06-16 15:12 更新

ToString 運(yùn)算符根據(jù)下表將其參數(shù)轉(zhuǎn)換為字符串類型的值:


表13——ToString轉(zhuǎn)換
輸入類型結(jié)果
Undefined"undefined"
Null"null"
Boolean如果參數(shù)是 true,那么結(jié)果為 "true"。 
如果參數(shù)是 false,那么結(jié)果為 "false"。
String結(jié)果等于輸入的參數(shù)(不轉(zhuǎn)換)。
Number參見(jiàn)下文的文法和注釋。
Object應(yīng)用下列步驟:
  1. 設(shè)原始值為調(diào)用 ToPrimitive ( 輸入?yún)?shù) , 暗示 字符串類型)的結(jié)果。
  2. 返回ToString(原始值)。


對(duì)數(shù)值類型應(yīng)用 ToString

 ToString 運(yùn)算符將數(shù)字 m 轉(zhuǎn)換為字符串格式的給出如下所示:

  1. 如果 m 是 NaN,返回字符串 "NaN"。
  2. 如果 m 是 +0 或 -0,返回字符串 "0"。
  3. 如果 m 小于零,返回連接 "-" 和 ToString (-m) 的字符串。
  4. 如果 m 無(wú)限大,返回字符串 "Infinity"。
  5. 否則,令 n, k, 和 s 是整數(shù),使得 k ≥ 1, 10k-1 ≤ s < 10k,s × 10n-k 的數(shù)字值是 m,且 k 足夠小。要注意的是,k 是s 在十進(jìn)制表示中的數(shù)字的個(gè)數(shù)。s 不被 10 整除,且s 的至少要求的有效數(shù)字位數(shù)不一定要被這些標(biāo)準(zhǔn)唯一確定。
  6. 如果 k ≤ n ≤ 21,返回由 k 個(gè) s 在十進(jìn)制表示中的數(shù)字組成的字符串(有序的,開(kāi)頭沒(méi)有零),后面跟隨字符 '0' 的n-k 次出現(xiàn)。
  7. 如果 0 < n ≤ 21,返回由 s 在十進(jìn)制表示中的、最多 n 個(gè)有效數(shù)字組成的字符串,后面跟隨一個(gè)小數(shù)點(diǎn) '. ',再后面是余下的 k-n 個(gè) s 在十進(jìn)制表示中的數(shù)字。
  8. 如果 -6 < n ≤ 0,返回由字符 '0' 組成的字符串,后面跟隨一個(gè)小數(shù)點(diǎn) '. ',再后面是字符 '0' 的 -n 次出現(xiàn),再往后是k 個(gè) s 在十進(jìn)制表示中的數(shù)字。
  9. 否則,如果 k = 1,返回由單個(gè)數(shù)字 s 組成的字符串,后面跟隨小寫字母 'e',根據(jù) n-1 是正或負(fù),再后面是一個(gè)加號(hào) '+' 或減號(hào) '-' ,再往后是整數(shù) abs(n-1) 的十進(jìn)制表示(沒(méi)有前置的零)。
  10. 返回由 s 在十進(jìn)制表示中的、最多的有效數(shù)字組成的字符串,后面跟隨一個(gè)小數(shù)點(diǎn) '. ',再后面是余下的是 k-1 個(gè) s在十進(jìn)制表示中的數(shù)字,再往后是小寫字母 'e',根據(jù)n-1 是正或負(fù),再后面是一個(gè)加號(hào) '+ ' 或減號(hào) '-' ,再往后是整數(shù) abs(n-1) 的十進(jìn)制表示(沒(méi)有前置的零)。

 下面的評(píng)語(yǔ)可能對(duì)指導(dǎo)實(shí)現(xiàn)有用,但不是本標(biāo)準(zhǔn)的常規(guī)要求。

  • 如果 x 是除 -0 以外的任一數(shù)字值,那么 ToNumber ( ToString (x)) 與 x 是完全相同的數(shù)字值。
  • s 至少要求的有效數(shù)字位數(shù)并非總是由步驟 5 中所列的要求唯一確定。

 對(duì)于那些提供了比上面的規(guī)則所要求的更精確的轉(zhuǎn)換的實(shí)現(xiàn),我們推薦下面這個(gè)步驟 5 的可選版本,作為指導(dǎo):

 否則,令 n, k, 和 s 是整數(shù),使得 k ≥ 1, 10k-1 ≤ s < 10k,s × 10n-k 的數(shù)字值是 m,且 k 足夠小。如果有數(shù)倍于 s 的可能性,選擇 s × 10n-k 最接近于 m 的值作為 s 的值。如果 s有兩個(gè)這樣可能的值,選擇是偶數(shù)的那個(gè)。要注意的是,k 是 s 在十進(jìn)制表示中的數(shù)字的個(gè)數(shù),且 s 不被 10 整除。

 ECMAScript 的實(shí)現(xiàn)者們可能會(huì)發(fā)現(xiàn),David M 所寫的關(guān)于浮點(diǎn)數(shù)進(jìn)行二進(jìn)制到十進(jìn)制轉(zhuǎn)換方面的文章和代碼很有用:

 Gay, David M. Correctly Rounded Binary-Decimal and Decimal-Binary Conversions. Numerical Analysis Manuscript 90-10. AT&T Bell Laboratories (Murray Hill, New Jersey). November 30, 1990. 在這里取得 http://cm.bell-labs.com/cm/cs/doc/90/4-10.ps.gz 。有關(guān)的代碼在這里 http://cm.bell-labs.com/netlib/fp/dtoa.c.gz 還有 http://cm.bell-labs.com/netlib/fp/g_fmt.c.gz 。這些都可在眾多的 netlib 鏡像站點(diǎn)上找到。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)