読者です 読者をやめる 読者になる 読者になる

parseIntを小数点切り捨てに使わない

JavaScript

TwitterのTL上でにわかに話題になっていた。parseIntは引数をstringにしてからint変換するので、小数点以下の切り捨てには使わん方が良いというお話。

> parseInt(0.000001)
0
> parseInt(0.0000001)
1

これは以下のように処理されているのと同じ

> (0.000001).toString();
'0.000001'
> parseInt('0.000001');
0
> (0.0000001).toString();
'1e-7'
> parseInt('1e-7');
1

ES2015対応のブラウザやnode v4系以降ならば、代わりに Math.trunc を使うと良いと思います。

元来 parsetInt は文字列を解析して整数を返す関数で、小数点以下を切り捨てる関数ではありません。

プログラミングの世界でparseという言葉は、主に文字列を解析して何かをする機能に対して使われる単語です。関数の正確な仕様を把握していなかったとしても(もちろん把握している方が良いのですが)、parseホゲホゲという関数に数値を渡すのは間違ってるのでは?と判断できる感覚を身に付けてしまうと良いと思います。