🌵

Math 3選

2023/05/18に公開

Math.floorを使用していたときにとある誤解に気がついたため、Mathメソッドのよく使う3つをまとめてみました。

Math

javascriptの便利なMath
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/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