JavaScriptで厄介な問題が発生しています。
> parseInt(1 / 0, 19)
> 18
なぜparseInt
関数は を返すのでしょうか18
?
ベストアンサー1
結果1/0
はInfinity
。
parseInt
は最初の引数を文字列として扱います。つまり、まず がInfinity.toString()
呼び出され、文字列 が生成されます。したがって、 19 進数を 10 進数に"Infinity"
変換するように要求した場合と同じように動作します。"Infinity"
以下に、19 進数の数字とその 10 進数値を示します。
Base 19 Base 10 (decimal)
---------------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 16
h 17
i 18
次に起こることは、parseInt
入力をスキャンし"Infinity"
て解析可能な部分を見つけ、最初の部分を受け入れた後に停止することですI
(n
は 19 進数の有効な数字ではないため)。
したがって、 を呼び出した場合と同じように動作しparseInt("I", 19)
、上記の表に従って 10 進数の 18 に変換されます。