签入新的数据库结构我看到有人将字段从float更改为double。想知道为什么,我检查了mysql文档,但老实说并不明白区别是什么。
有人可以解释一下吗?
答案 0 :(得分:89)
它们都代表浮点数。 FLOAT
用于单精度,而DOUBLE
用于双精度数。
MySQL对单精度值使用4个字节,对双精度值使用8个字节。
与浮点数和十进制(数字)数字有很大不同,您可以将其与DECIMAL
数据类型一起使用。与浮点数不同,它用于存储精确的数值数据,其中保留精确的精度很重要,例如使用货币数据。
答案 1 :(得分:60)
也许这个例子可以解释。
CREATE TABLE `test`(`fla` FLOAT,`flb` FLOAT,`dba` DOUBLE(10,2),`dbb` DOUBLE(10,2));
我们有一个这样的表:
+-------+-------------+
| Field | Type |
+-------+-------------+
| fla | float |
| flb | float |
| dba | double(10,2)|
| dbb | double(10,2)|
+-------+-------------+
首先,我们尝试在每个字段中添加' 1.2' 的记录:
INSERT INTO `test` values (1.2,1.2,1.2,1.2);
表格显示如下:
SELECT * FROM `test`;
+------+------+------+------+
| fla | flb | dba | dbb |
+------+------+------+------+
| 1.2 | 1.2 | 1.20 | 1.20 |
+------+------+------+------+
看到不同的?
我们尝试下一个例子:
SELECT fla+flb, dba+dbb FROM `test`;
HOLA!我们可以找到不同的东西:
+--------------------+---------+
| fla+flb | dba+dbb |
+--------------------+---------+
| 2.4000000953674316 | 2.40 |
+--------------------+---------+
答案 2 :(得分:27)
双打就像浮子,除了它们的两倍大。这样可以提高准确度。
答案 3 :(得分:11)
Float 有32位(4字节),精度为8位。 Double 具有64位(8字节),精确到16位。
如果您需要更高的准确度,请改用 Double Float 。
答案 4 :(得分:10)
FLOAT存储浮点数,精度高达8位,有4个字节,而DOUBLE存储浮点数,精度高达18位,有8个字节。