一尘不染

存储统计数据时,我需要DECIMAL,FLOAT还是DOUBLE?

mysql

我创建游戏的目的很有趣,但是我仍然想认真对待它,它是一个托管各种测试的网站。通过这些测试,我希望收集统计数据。

其中一些数据将包括测试定时完成的百分比。我可以轻松计算出测试的百分比,但是当我存储有关测试完成的各种不同值时,我希望返回真实数据。

大多数值都是PHP浮点数,所以我的问题是,如果我想要真实的统计数据,应该将它们以FLOAT,DOUBLE或DECIMAL的形式存储在MYSQL中。

我想利用MYSQL的功能,例如AVG()LOG10()以及TRUNCATE()。为了使MYSQL根据我插入的值返回真实数据,应将什么用作数据库列选择。

我问是因为某些数字可能是也可能不是浮点数,例如10、10.89、99.09或仅仅是0。但是我希望返回真实有效的统计数据。

我可以依靠浮点运算吗?

编辑

我知道这是一个通用问题,我对此深表歉意,但对于像我这样的非数学家,我也不是MYSQL专家,我希望获得该领域专家的意见。

我已经进行了研究,但是我仍然对此事有模糊的判断。再次抱歉,我的问题不在主题范围内或不适合该网站。


阅读 510

收藏
2020-05-17

共1个答案

一尘不染

链接 很好地解释了您要寻找的内容。这是说的:

所有这三种类型都可以通过以下参数(大小,d)指定。其中size是字符串的总大小,而d表示精度。例如,要存储类似1234.567的数字,请将数据类型设置为DOUBLE(7,3),其中7是位数的总数,而3是跟随小数点的位数。

FLOAT和DOUBLE都代表浮点数。FLOAT用于单精度,而DOUBLE用于双精度数字。从0到23的精度导致4字节单精度FLOAT列。从24到53的精度将导致8字节的双精度DOUBLE列。FLOAT精确到小数点后7位,双精度最高14位。

小数的声明和功能类似于Double。但是浮点值和十进制(数字)值之间有一个很大的区别。我们使用DECIMAL数据类型来存储精确的数值,而在这里我们不需要精度,而是想要精确的数值。小数类型最多可存储65位数字,小数点后为30位数字。

因此,对于最准确和精确的值,十进制将是最佳选择。

2020-05-17