0

ecmascript9.8.1セクションToStringAppliedto the Number Typeを読みましたが、それが何を意味するのかわかりません。

演算子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の10進表現の桁数であり、sは10で割り切れないこと、およびsの最下位桁は必ずしもこれらの基準によって一意に決定されるわけではないことに注意してください。

  6. k <= n <= 21の場合、sの10進表現のk桁(先行ゼロなしの順序で)と、それに続く文字「0」のnk回の出現で構成される文字列を返します。

  7. 0 <n <= 21の場合、sの10進表現の最上位n桁と、それに続く小数点'で構成される文字列を返します。'の後に、sの10進表現の残りのkn桁が続きます。

  8. -6 <n <= 0の場合、文字「0」とそれに続く小数点「」で構成される文字列を返します。'、その後に-n個の文字' 0'が続き、その後にsの10進表現のk桁が続きます。

  9. それ以外の場合、k = 1の場合、n-1が正か負かに応じて、sの1桁、小文字の「e」、プラス記号「+」またはマイナス記号「-」で構成される文字列を返します。 、その後に整数abs(n-1)の10進表現が続きます(先行ゼロなし)。

  10. sの小数表現の最上位桁とそれに続く小数点'で構成される文字列を返します。'、sの10進表現の残りのk-1桁、小文字の' e'、プラス記号' +'またはマイナス記号'-'が続き、n-1が正か負かによって異なります。 、その後に整数abs(n-1)の10進表現が続きます(先行ゼロなし)。

誰かが私にアルゴリズムを説明したり、数値タイプに適用される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 = 100000000000000000000s = 1k = 1n = 21、したがってポイント 6 が返されます。"100000000000000000000"
  • m = 10000000000000000000000s = 1k = 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 に答える