在MYSQL上操作双精度的正确方法(精度)?

时间:2011-11-26 15:40:49

标签: mysql

我有一个1美分的拍卖网站,每次出价都会提高1美分的出价

current_bid字段是mysql上的DOUBLE,表示以美元为单位的出价,我需要避免像0.2 + 0.1 = 0.299999999这样的情况 (不确定它是否是正确的结果格式,但你明白了)

由于精确度,除了这两个数字之外我还有很多其他案例。

现在,这是我的代码:(我希望它的正确和有效,否则,我对你的想法持开放态度)

UPDATE `auctions` SET 
`current_bid` = ROUND(ROUND(`current_bid` * 100) + 1)/100
...

1 个答案:

答案 0 :(得分:1)

切换到DECIMAL为时已晚? Floating point列类型提供近似值;这是一个众所周知的事实,它是设计的。