0

関連する質問で私が尋ねたparseInt() は、指数を持つ数値リテラルを正しく解析しません

@MarktoFixedは、括弧を使用しない場合、負の整数 ( e文字を含む数値)を呼び出すと、文字列ではなく数値が返されることに気付きました。

例を見てみましょう:

  • 括弧なしの負の入力

    > -3.67394039744206e-15.toFixed(19)
    -3.6739e-15
    > (-3.67394039744206e-15).toFixed(3)
    -0
    > -3.67394039744206e-15.toFixed(14)
    -0
    > -3.67394039744206e-15.toFixed(15)
    -4e-15
    > -3.67394039744206e-15.toFixed(16)
    -3.7e-15
    > -3.67394039744206e-15.toFixed(17)
    -3.67e-15
    > -3.67394039744206e-15.toFixed(18)
    -3.674e-15
    
  • 負、括弧付き

    > (-3.67394039744206e-15).toFixed(19)
    '-0.0000000000000036739'
    > (-3.67394039744206e-15).toFixed(18)
    '-0.000000000000003674'
    > (-3.67394039744206e-15).toFixed(17)
    '-0.00000000000000367'
    > (-3.67394039744206e-15).toFixed(16)
    '-0.0000000000000037'
    > (-3.67394039744206e-15).toFixed(15)
    '-0.000000000000004'
    > (-3.67394039744206e-15).toFixed(14)
    '-0.00000000000000'
    > (-3.67394039744206e-15).toFixed(13)
    '-0.0000000000000'
    
  • 正、括弧なし

    > 3.67394039744206e-15.toFixed(14)
    '0.00000000000000'
    > 3.67394039744206e-15.toFixed(15)
    '0.000000000000004'
    > (3.67394039744206e-15).toFixed(16)
    '0.0000000000000037'
    
  • 負ですが、指数はありません

    > -3.toFixed(3)
    SyntaxError: Unexpected token ILLEGAL
        at Object.exports.createScript (vm.js:44:10)
        at REPLServer.defaultEval (repl.js:117:23)
        at bound (domain.js:254:14)
        at REPLServer.runBound [as eval] (domain.js:267:12)
        at REPLServer.<anonymous> (repl.js:279:12)
        at REPLServer.emit (events.js:107:17)
        at REPLServer.Interface._onLine (readline.js:214:10)
        at REPLServer.Interface._line (readline.js:553:8)
        at REPLServer.Interface._ttyWrite (readline.js:830:14)
        at ReadStream.onkeypress (readline.js:109:10)
    

なぜこうなった?これは期待されていますか?これを処理するコードのスニペットをいくつか見てみたいと思います (v8 エンジンなど)。

4

0 に答える 0