首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL SUM返回错误的值

MySQL SUM返回错误的值
EN

Stack Overflow用户
提问于 2012-05-24 23:35:35
回答 3查看 1.9K关注 0票数 0

如果我在MySQL中添加一个这样的表:

代码语言:javascript
复制
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` float NOT NULL,
  PRIMARY KEY (`id`)
);

并添加一个条目:

代码语言:javascript
复制
INSERT INTO `test` (`value`) VALUES ('123.45');

然后像这样对它进行求和:

代码语言:javascript
复制
SELECT SUM( value )
FROM `test` 

为什么它返回123.449996948242而不是123.45?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-24 23:38:40

这是因为浮点数不准确。请改用DECIMAL数据类型。

代码语言:javascript
复制
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` decimal(8,2) NOT NULL,
  PRIMARY KEY (`id`)
);

请参阅此示例:SQLFiddle

票数 2
EN

Stack Overflow用户

发布于 2012-05-24 23:38:56

因为浮点数有一些精度“问题”:

机器的误差精度( store)

  • representation
  1. is...
票数 0
EN

Stack Overflow用户

发布于 2012-05-24 23:47:53

你试过了吗?

代码语言:javascript
复制
SELECT 
      ROUND( SUM(value), 2)
FROM `test` 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10740704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档