0

我阅读了 ecmascript 9.8.1 部分 ToString 应用于数字类型,但我不知道它是什么意思。

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

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

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

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

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

  5. 否则,令n、k、s为整数,使得k >= 1, 10k-1<= s <10k,s * 10n-k的数值为m,k尽可能小。请注意,k 是 s 的十进制表示中的位数,即 s 不能被 10 整除,并且 s 的最低有效位不一定由这些标准唯一确定。

  6. 如果 k <= n <= 21,则返回由 s 的十进制表示的 k 位数字组成的字符串(按顺序,不带前导零),后跟出现 nk 个字符“0”。

  7. 如果 0 < n <= 21,则返回由 s 的十进制表示的最高 n 位数字组成的字符串,后跟一个小数点 '。',后跟 s 的十进制表示的剩余 kn 位。

  8. 如果 -6 < n <= 0,则返回由字符 '0' 后跟小数点 ' 组成的字符串。',后跟 -n 次出现的字符 '0',然后是 s 的十进制表示的 k 位。

  9. 否则,如果k = 1,则根据n-1是正数还是负数,返回由s的一位数,后跟小写字符'e',后跟加号'+'或减号'-'组成的字符串,后跟整数 abs(n-1) 的十进制表示(没有前导零)。

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

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

4

3 回答 3

1

该规范是为 JavaScript引擎的开发人员制定的。它描述了引擎内部的细节,这可能与 JS 开发人员无关。

特别是ToString不能直接从JS调用该操作。您可以通过此功能获得几乎相同的效果:

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

现在第 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是整数,n是 的位数ms是去除所有尾随零后得到的整数,并且k是 中的位数s

所以例如

  • m = 100000000000000000000将产生s = 1, k = 1, n = 21, 因此第 6 点。返回"100000000000000000000"
  • m = 10000000000000000000000表示s = 1, k = 1, n = 23, 因此第 9 点。返回"1e+22"
于 2012-04-27T05:34:54.787 回答
0

你可以在MDN获得关于 toString 的最佳教程

希望它会有所帮助。

于 2012-04-27T05:09:48.390 回答
0

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

var number = 1;
var numberAsString = '' + number;
于 2012-04-27T05:11:11.143 回答