如果我在MySQL中添加这样的表:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` float NOT NULL,
PRIMARY KEY (`id`)
);
并添加一个条目:
INSERT INTO `test` (`value`) VALUES ('123.45');
并像这样做一个SUM:
SELECT SUM( value )
FROM `test`
为什么它返回123.449996948242而不是123.45?
答案 0 :(得分:2)
这是因为浮点不准确。改为使用DECIMAL数据类型。
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` decimal(8,2) NOT NULL,
PRIMARY KEY (`id`)
);
请参阅此示例:SQLFiddle
答案 1 :(得分:0)
因为浮点数具有一些精确的“问题”:
答案 2 :(得分:0)
你试过吗
SELECT
ROUND( SUM(value), 2)
FROM `test`