PHPカンファレンス福岡2023
LT(5分)

その四捨五入( round() )、本当に合っていますか?

ecworks_masap MASA-P ecworks_masap

少数を整数にしたり、大きな数字を有効数字にしたりするために四捨五入(丸め)をすると思いますが、その時にPHPでは「round()」関数を用いると思います。
round関数には第三引数にオプション値がありますが、引数を省略した場合、文字通りの四捨五入(有効桁より一つ下の桁が5以上なら有効桁が1大きくなる : PHP_ROUND_HALF_UP)となります。

実はその丸め処理、安直に四捨五入を選ぶと計算や動作に問題が出ることがあります。
先日ちょっとした問題になり、良い機会なので発表したいと思います。
当方ン十年エンジニアをしていましたがずっと意識したことがなく、多分皆様もそうじゃないかと思いますので。

※今回の話はPHPに限らずどの言語でも当てはまると思います