投稿日:

PHPのfloor関数で痛い目に合う

PHPのfloor関数で痛い目に合ったのでメモしておきます。

お客さんから連絡がありシステムででの計算の結果がおかしいとのことで調べるとfloor関数を使った後に結果がずれてきていました。
何でやと調べると意外と有名な話だった・・・
浮動小数点の精度が微妙と本家で警告が出ている。http://php.net/manual/ja/language.types.float.php

echo floor((0.1+0.7)*10);を実行すると8になってほしいのに7になってしまうというお話。
一番簡単な対策としてecho floor((string)(0.1+0.7)*10);として回避しておきました。