関連する質問で私が尋ねた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 エンジンなど)。