SOFTELメモ Developer's blog

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

2010/01/26 MySQL

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進数の小数にすると無限小数になるので、当たり前といえば当たり前の現象ともいえます。

関連するメモ

コメント

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

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