はじめに
システム開発の仕事をしているとお客様からExcelの計算式で仕様を渡されることがあると思います。
え、ないですか? 私は最近あったんですよ。
んで、なんの変哲もない数式ならいいのですが、ROUND
ROUNDUP
ROUNDDOWN
関数が入ってきたときにどうしたもんかなって話です。
置き換えよう
ROUND
ROUNDUP
ROUNDDOWN
は下記の感じで対応しています。
丸め方 | Excel | PHP | JavaScript |
---|---|---|---|
四捨五入 | ROUND(値, 丸める桁数) | round(値, 丸める桁数, 丸めモード) | Math.round(値) |
切り上げ | ROUNDUP(値, 丸める桁数) | ceil(値) | Math.ceil(値) |
切り捨て | ROUNDDOWN(値, 丸める桁数) | floor(値) | Math.floor(値) |
こうしてみると、JavaScriptが一番融通がきかないのがわかります。。。
PHPのround関数は丸めモードを変えることによって四捨五入を五捨六入にしたりもできます。日本人で五捨六入したい人はちょいちょい居ますけど、外国の案件でも需要があったりするんでしょうか?
そもそもExcelに ceil
と floor
はないの?
実はあるのですが、引数がだいぶ違います。
第2引数が「基準となる倍数」とか言ってて、若干ピンとこないですよね。
かなり柔軟な丸めができるのでしょうけど、実用的かと言われると微妙な気がしますね。