2014年7月21日月曜日

PHP:小数点の切り捨てがおかしいとき

PHP で小数点を丸めるときに、
丸め誤差の影響で意図していない結果が出ることがある。
例えば以下の例では 8 になって欲しいところが 7 になる。
$ php -a
php > $n = (0.1 + 0.7) * 10;
php > echo floor($n) . "\n";
7

切り捨て直前に文字列に変換することで回避できる。
php > echo floor(strval($n)) . "\n";
8


参考: PHPの小数演算における切り上げ切り捨て問題 | PSI Labs
http://www.psi-net.co.jp/blog/?p=277


0 件のコメント:

コメントを投稿