SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】切り捨てたら1円アップ

MySQL4環境にて発生。

次のSQLをMySQL4環境で実行

select 5800, 5800*0.05, ceil(5800*0.05), ceil(5800*5/100), ceil(5800*0.05 - 0);

結果

+------+-----------+-----------------+------------------+---------------------+
| 5800 | 5800*0.05 | ceil(5800*0.05) | ceil(5800*5/100) | ceil(5800*0.05 - 0) |
+------+-----------+-----------------+------------------+---------------------+
| 5800 |    290.00 |             291 |              290 |                 290 |
+------+-----------+-----------------+------------------+---------------------+

比較的高い頻度で困ったことが起きそうな現象です。

困った人が多くて修正されたのか、MySQL5では発生しませんでした。

0.05は2進数の小数にすると無限小数になるので、当たり前といえば当たり前の現象ともいえます。

関連するメモ

コメント(1)

2進数の小数表現 at softelメモ 2010年2月3日 15:51

[…] 【MySQL】切り捨てたら1円アップ […]