2
我已經與測試數據集如下表:Mysql的SUM函數返回返回錯誤的十進制值
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`desc` varchar(20) DEFAULT NULL,
`amount` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
insert into `test` (`id`, `desc`, `amount`) values('5',NULL,'847.3');
insert into `test` (`id`, `desc`, `amount`) values('6',NULL,'-847');
insert into `test` (`id`, `desc`, `amount`) values('7',NULL,'847.3');
insert into `test` (`id`, `desc`, `amount`) values('8',NULL,'-847');
insert into `test` (`id`, `desc`, `amount`) values('9',NULL,'847.4');
所以表如下所示:
現在我的問題是,當我用:
SELECT SUM(amount) FROM test;
我得到以下結果847.9999999999999
而不是預期的848
。
任何想法,爲什麼我沒有得到小數圓整?
更新:
我對MySQL Server: 5.5.17
(Windows)和MySQL Server: 5.5.20
Centos的
對我來說結果是848 –
使用'decimal'類型而不是'double'這是浮點數,因此帶有固有的不精確性; http://stackoverflow.com/questions/6831217/double-vs-decimal-in-mysql –
我建議你使用DECIMAL類型,而不是DOUBLE – fthiella