Javascript 应用于数字类型的ToString

Javascript 应用于数字类型的ToString,javascript,type-conversion,Javascript,Type Conversion,我阅读了ecmascript 9.8.1节中应用于数字类型的字符串, 但我不知道这是什么意思 运算符ToString将数字m转换为字符串格式,如下所示: 如果m是NaN,则返回字符串“NaN” 如果m为+0或-0,则返回字符串“0” 如果m小于零,则返回字符串“-”和ToString(-m)的字符串串联 如果m是无穷大,则返回字符串“infinity” 否则,设n、k和s为整数,这样k>=1,10k-1您就可以获得关于在 希望能有所帮助。如果您只是想将数字转换为字符串,只需使用串联: var n

我阅读了ecmascript 9.8.1节中应用于数字类型的字符串, 但我不知道这是什么意思

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

  • 如果m是NaN,则返回字符串“NaN”

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

  • 如果m小于零,则返回字符串“-”和ToString(-m)的字符串串联

  • 如果m是无穷大,则返回字符串“infinity”


  • 否则,设n、k和s为整数,这样k>=1,10k-1您就可以获得关于在


    希望能有所帮助。

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

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

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

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

      function ToString(input) {
          return '' + input;
      }
    
    现在简单描述当一个数字被传递到这个函数中时应该发生什么

    第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
    m
    的位数
    s
    是从所有尾随零中去除的整数,
    k
    s
    中的位数

    比如说

    • m=1000000000000000000
      将产生
      s=1
      k=1
      n=21
      ,因此第6点。返回
      “1000000000000000000”
    • m=100000000000000000000
      表示
      s=1
      k=1
      n=23
      ,因此第9点。返回
      “1e+22”

    谢谢您的回复。根据9.8.1,当数值m为1000000000000000000时,n=k=21,s=1000000000000000000,因此,当数值m为10000000000000000000时,n=k=23,根据第5点将m转换为字符串,s=100000000000000000000是否根据第10点将m转换为字符串?@user1039304我编辑了我的答案以澄清第5点。我忘了s不能被10整除。。。所以m=100000000.00000003001将产生s=100000000000003001,k=20,n=9,因此第7点,返回“100000000.0000000003001”,我是对的吗?不完全正确。问题是,条件“s×10^(n)的数值−k) 是五分之一。并不完全意味着“s*10^(n-k)==m”。相反,它解释了舍入误差。我明白了。谢谢你的回复。