ToString应用于数字类型

时间:2012-04-27 04:55:41

标签: javascript type-conversion

我读了ecmascript 9.8.1部分ToString应用于数字类型, 但我不知道这意味着什么。

  

运算符ToString将数字m转换为字符串格式,如下所示:

     
      
  1. 如果m是NaN,则返回字符串“NaN”。

  2.   
  3. 如果m为+0或-0,则返回字符串“0”。

  4.   
  5. 如果m小于零,则返回字符串“ - ”和ToString(-m)的字符串连接。

  6.   
  7. 如果m为无穷大,则返回字符串“Infinity”。

  8.   
  9. 否则,令n,k和s为整数,使得k> = 1,10k-1 <= s <10k,s * 10n-k的数值为m,并且k为一样小   可能。请注意,k是小数位数   s的表示,s不能被10整除,而且最少   s的有效数字不一定由这些唯一确定   标准。

  10.   
  11. 如果k <= n&lt; = 21,则返回由s的十进制表示的k个数字组成的字符串(按顺序,没有前导零),   然后是n个出现的字符'0'。

  12.   
  13. 如果0&lt; n&lt; = 21,返回由s的十进制表示的最高n位数组成的字符串,后跟a   小数点 '。 ',然后是剩余的k-n数字   s的十进制表示。

  14.   
  15. 如果-6&lt; n&lt; = 0,返回由字符'0'组成的字符串,后跟小数点'。 ',然后是-n次出现的   字符'0',后跟十进制表示的k个数字   的。

  16.   
  17. 否则,如果k = 1,则返回由s的单个数字组成的字符串,后跟小写字母“e”,后跟加号   根据n-1是正数还是正数来标记'+'或减号' - '   否定,后跟整数的十进制表示   abs(n-1)(没有前导零)。

  18.   
  19. 返回由s的十进制表示的最高位数字组成的字符串,后跟一个小数点'。 ”,   其次是十进制表示的剩余k-1位数   s,后跟小写字母'e',后跟加号'+   '或减号' - '根据n-1是正还是负,   后跟整数abs(n-1)的十进制表示(带   没有前导零。)

  20.   

有人可以向我解释算法或给我一个关于应用于数字类型的ToString的博客吗?

3 个答案:

答案 0 :(得分:1)

该规范适用于JavaScript 引擎的开发人员。它描述了引擎内部的细节,这些内容可能与JS开发人员无关。

特别是,不能直接从JS调用ToString操作。你可以通过这个函数获得几乎相同的效果:

  function ToString(input) {
      return '' + input;
  }

现在section 9.8.1简单地描述了将数字传递给此函数时应该发生的事情。

要点5.到10.确保非常大的数字或带有许多小数位的数字被字符串化为科学记数法,如下所示:

ToString(100000000000000000000) // "100000000000000000000"
ToString(10000000000000000000000) // "1e+22"
ToString(.000003001) // ".000003001"
ToString(.0000003001) // "3.001e-7"
ToString(100000000.00000003001) // "100000000.00000003"
ToString(1000000000.00000003001) // "1000000000"

至于5:可以推断

如果m是整数,nm的位数。 s是剥离所有尾随零的结果,ks中的位数。

所以例如

  • m = 100000000000000000000会产生s = 1k = 1n = 21,因此点6.返回"100000000000000000000"
  • m = 10000000000000000000000表示s = 1k = 1n = 23,因此点9.返回"1e+22"

答案 1 :(得分:0)

您可以在MDN

获取有关toString的最佳教程 希望它会有所帮助。

答案 2 :(得分:0)

如果您只是想将数字转换为字符串,只需使用连接:

var number = 1;
var numberAsString = '' + number;