PEP*_*OVE 63 mysql floating-point double decimal
我正在创造乐趣,但我仍然想认真对待它,一个主持各种测试的网站.通过这些测试,我希望收集统计数据.
一些数据将包括测试完成程度的百分比.我可以轻松地计算测试的百分比,但我希望返回真实数据,因为我存储了有关完成时测试的各种不同值.
在PHP浮点数中,大多数值都是,所以我的问题是,如果我想要真正的统计数据,我应该将它们作为FLOAT,DOUBLE或DECIMAL存储在MYSQL中.
我想利用MYSQL的功能AVG(),LOG10()如以及TRUNCATE().为了让MYSQL根据我插入的值返回真实数据,我应该使用什么作为数据库列选择.
我问,因为有些数字可能是浮点数,例如10,10.89,99.09,或者只是0,但我希望返回真实有效的统计数据.
我可以依靠浮点数学吗?
编辑
我知道这是一个普遍的问题,我道歉,但对于像我这样的非数学家,我也不是MYSQL专家,我想对这个领域的专家提出意见.
我已经完成了我的研究,但我仍然觉得我对这个问题有一个阴云密布的判断.如果我的问题不合适或不适合本网站,我再次道歉.
Lin*_*ger 79
此链接可以很好地解释您要查找的内容.这是说什么:
所有这三种类型都可以通过以下参数(大小,d)指定.其中size是String的总大小,d表示精度.例如,要存储类似1234.567的数字,您将数据类型设置为DOUBLE(7,3),其中7是总位数,3是小数点后面的位数.
FLOAT和DOUBLE都表示浮点数.FLOAT用于单精度,而DOUBLE用于双精度数.精度从0到23会产生一个4字节的单精度FLOAT列.从24到53的精度产生8字节双精度DOUBLE列.FLOAT精确到大约7位小数,并且DOUBLE高达14位.
Decimal的声明和功能类似于Double.但浮点值和十进制(数值)值之间存在一个很大的区别.我们使用DECIMAL数据类型来存储精确的数值,我们不需要精确但精确且准确的值.十进制类型可以存储最多65位,小数点后30位.
因此,对于最准确和最精确的值,Decimal将是最佳选择.
Tim*_*ess 10
十进制:定点类型(精确值)。当您像金钱一样关心精确度时使用它。
示例:salary DECIMAL(8,2), 8 为总位数,2 为小数位数。salary将在范围内-999999.99,以999999.99
Float, Double : 浮点类型(近似值)。Float用4个字节表示值,Double用8个字节表示值。
例:percentage FLOAT(5,2),同类型decimal,5为总位数,2为小数位。percentage将存储之间的值-999.99来999.99。
请注意,它们是近似值,在这种情况下:
1 / 3.0 = 0.3333333...将存储为0.33(小数点后两位)33.009将存储为33.01(四舍五入到小数点后两位)除非您存储十进制数据(即货币),否则应使用标准浮点类型(FLOAT或DOUBLE).DECIMAL是一个定点类型,因此在计算SUM这样的东西时会溢出,对LOG10来说会非常不准确.
关于二进制浮点类型没有什么"不太精确",事实上,它们将更准确(和更快)满足您的需求.与DOUBLE一起去.
| 归档时间: |
|
| 查看次数: |
64255 次 |
| 最近记录: |