1. ホーム
  2. javascript

[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?

2022-03-21 17:21:02

質問

で困ったことがあります。 JavaScript .

> parseInt(1 / 0, 19)
> 18

なぜ parseInt 関数が返す 18 ?

解決方法は?

の結果は 1/0 Infinity .

parseInt は最初の引数を文字列として扱うので、まず最初に Infinity.toString() が呼び出され、文字列 "Infinity" . というわけで、以下のように変換するように指示したのと同じように動作します。 "Infinity" を19進数で10進数に変換します。

以下は、基数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に変換されます。