質問: parseInt(elapsed / 365 * 24 * 60 * 60);のように書き直すと次は大きな値(1000以上)が不規則に出力されました。 原因が全くわからなかったのでもし解決策があればご教示願いたいです。
回答: 今回のバグの原因は、引数が数値であるにも関わらず `parseInt` を使ったことです。 parseInt は引数に文字列を受け取ります。 また、JavaScript では、`0.000000031709791983764586` のようなゼロに近い値の場合、`3.1709791983764586e-8` のような指数表記で文字列化されます。 よって、例えば `parseInt(1 / 31536000)` は、`parseInt(3.1709791983764586e-8)` になって、`parseInt("3.1709791983764586e-8")` になって、最終的に `3` となります。 `parseInt` ではなく、`Math.floor` などを使うことでバグを解消できます。