「JavaScript 小数点切り捨て」で検索するとMath.floor()とparseInt()使う記事が出てきてよろしくないと思ったのでメモ。
結論
小数点以下を削除したいのならMath.trunc()使え。負の時は思ってたのと違うかも。
小数点以下切り下げならMath.floor()
正の値のときは何も問題が無いと思うけど、Math.floorは名前の通り床、下の方に寄せる関数なので整数部分が変わってしまう。
日本語で切り捨てと言ってしまっているのが問題で、切り下げと考えれば大丈夫そう。
Math.floor(100.1) 100 Math.floor(-100.1) -101
Math.floor() - JavaScript | MDN
Math.ceilも天井、上に寄せる関数なので同じ現象が起きる。けど日本語だと小数点以下切り上げと呼ばれるので誤解は少ないかもしれない。
Math.ceil(100.1) 101 Math.ceil(-100.1) -100
Math.truncであればtruncate、文字通り捨ててくれるので正負に関わらず整数部分は変わらない。
Math.trunc() - JavaScript | MDN
一般的な金額の用途で「小数点以下切り捨ててほしい」ってだいたいこっちな気がする
Math.trunc(100.1) 100 Math.trunc(-100.1) -100
parseIntを使うと書いてある記事もあるけど、基数指定しないと問題起きるし、この用途ではふさわしくないと思う。
[JavaScript] 8をparseIntすると0になる問題の対処法
一般的な呼び方じゃないかもしれないけど、切り捨てと切り下げを日本語でもちゃんと分けて考えれば良さそう
小数点以下切り捨て → Math.trunc
小数点以下切り下げ → Math.floor
小数点以下切り上げ → Math.ceil