https://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86
まとめた。単純な話かと思いきや罠が多い。
通称 正式名称 javascript関数名 説明 ---------------------------------------------------------------------------------------- 切り上げ 無限大への丸め なし 絶対値を切り上げる。(+2.5→+3.0、-2.5→-3.0) 一般的な「切り上げ」はこれ。 切り捨て 0への丸め Math.trunc(n) 絶対値を切り捨てる。(+2.5→+2.0、-2.5→-2.0) 一般的な「切り捨て」はこれ。 切り上げ 正の無限大への丸め Math.ceil(n) プラスの方向に切り上げる。(+2.5→+3.0、-2.5→-2.0) 切り捨て 負の無限大への丸め Math.floor(n) マイナスの方向に切り上げる。(+2.5→+2.0、-2.5→-3.0) 四捨五入 四捨五入 Math.round(n) 四捨五入。JIS Z 8401で負数は絶対値として丸める(-1.5 → -2 へと丸める)と決められている。 C#やPHPなどはこれに従ってる。 ただし!javascriptは小数部分が 0.5 である場合は、正の無限大の方向に丸められる!!!(Math.round(-1.5) → -1) https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/round C#などで使う.NETのMath.Roundのデフォルト動作は「四捨五入」ではなく「最近接偶数への丸め」なので注意! 「* program: 数値を四捨五入するには?」も参照のこと。 https://www.atmarkit.co.jp/fdotnet/dotnettips/700mathround/mathround.html
自前実装するときは負数のときも考慮しないとおかしくなる。0.5を足して小数部分を切り落とすだけではマイナスの四捨五入はうまくいかないなど。
https://stackoverflow.com/questions/17383794/how-do-i-truncate-a-decimal-in-php
phpでMath.trancのようなことをしたい場合、intvalを使えばいい。