MySQL:float和double有什么区别?

时间:2010-01-29 08:50:35

标签: mysql

签入新的数据库结构我看到有人将字段从float更改为double。想知道为什么,我检查了mysql文档,但老实说并不明白区别是什么。

有人可以解释一下吗?

5 个答案:

答案 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个字节。