🌵
Math 3選
Math.floorを使用していたときにとある誤解に気がついたため、Mathメソッドのよく使う3つをまとめてみました。
Math
javascriptの便利なMath
Math.floor
小数点以下を切り捨てするメソッドだと長らく勘違いしていました。
実際には
console.log(Math.floor(5.95));
// Expected output: 5
console.log(Math.floor(5.05));
// Expected output: 5
console.log(Math.floor(5));
// Expected output: 5
console.log(Math.floor(-5.05));
// Expected output: -6
負の値の時は小数点以下を切り捨てているのではなく、与えられた数値以下で最大の整数を返します。
Math.trunc
小数点以下を切り捨てして、自然数値を取り出したい時はこっちを使います。
値がマイナスにならないことが証明されていれば、Math.floorでもいいんだけれど。
console.log(Math.trunc(13.37));
// Expected output: 13
console.log(Math.trunc(42.84));
// Expected output: 42
console.log(Math.trunc(0.123));
// Expected output: 0
console.log(Math.trunc(-0.123));
// Expected output: -0
Math.round
四捨五入するならこっち。
負の値の時0.5までが切り捨てになるのはちょっと謎。
console.log(Math.round(0.9));
// Expected output: 1
console.log(Math.round(5.95), Math.round(5.5), Math.round(5.05));
// Expected output: 6 6 5
console.log(Math.round(-5.05), Math.round(-5.5), Math.round(-5.95));
// Expected output: -5 -5 -6
まとめ
正しいメソッドを使うことは大事だと思いました。計算系は思わぬバグを生みがちだからね。。。
Discussion