Dan*_*llo 96
它们都代表浮点数.A FLOAT表示单精度,而a DOUBLE表示双精度数.
MySQL对于单精度值使用四个字节,对于双精度值使用八个字节.
与浮点数和十进制(数字)数字有很大不同,您可以将它们与DECIMAL数据类型一起使用.与浮点数不同,这用于存储精确的数值数据,其中保持精确的精度很重要,例如使用货币数据.
小智 68
也许这个例子可以解释.
CREATE TABLE `test`(`fla` FLOAT,`flb` FLOAT,`dba` DOUBLE(10,2),`dbb` DOUBLE(10,2));
Run Code Online (Sandbox Code Playgroud)
我们有一个这样的表:
+-------+-------------+
| Field | Type |
+-------+-------------+
| fla | float |
| flb | float |
| dba | double(10,2)|
| dbb | double(10,2)|
+-------+-------------+
Run Code Online (Sandbox Code Playgroud)
首先,我们尝试在每个字段中插入一条带"1.2"的记录:
INSERT INTO `test` values (1.2,1.2,1.2,1.2);
Run Code Online (Sandbox Code Playgroud)
表格显示如下:
SELECT * FROM `test`;
+------+------+------+------+
| fla | flb | dba | dbb |
+------+------+------+------+
| 1.2 | 1.2 | 1.20 | 1.20 |
+------+------+------+------+
Run Code Online (Sandbox Code Playgroud)
看到不同的?
我们尝试下一个例子:
SELECT fla+flb, dba+dbb FROM `test`;
Run Code Online (Sandbox Code Playgroud)
你好!我们可以找到这样的不同:
+--------------------+---------+
| fla+flb | dba+dbb |
+--------------------+---------+
| 2.4000000953674316 | 2.40 |
+--------------------+---------+
Run Code Online (Sandbox Code Playgroud)
我以为我想补充我自己的例子,帮助我使用值看出区别1.3添加或与另一个相乘时float,decimal和double.
1.3float ADDED为1.3不同类型:
|float | double | decimal |
+-------------------+------------+-----+
|2.5999999046325684 | 2.6 | 2.60000 |
Run Code Online (Sandbox Code Playgroud)
1.3float由1.3不同类型MULTIPLIED :
| float | double | decimal |
+--------------------+--------------------+--------------+
| 1.6899998760223411 | 1.6900000000000002 | 1.6900000000 |
Run Code Online (Sandbox Code Playgroud)
这是使用MySQL 6.7
查询:
SELECT
float_1 + float_2 as 'float add',
double_1 + double_2 as 'double add',
decimal_1 + decimal_2 as 'decimal add',
float_1 * float_2 as 'float multiply',
double_1 * double_2 as 'double multiply',
decimal_1 * decimal_2 as 'decimal multiply'
FROM numerics
Run Code Online (Sandbox Code Playgroud)
创建表格和插入数据:
CREATE TABLE `numerics` (
`float_1` float DEFAULT NULL,
`float_2` float DEFAULT NULL,
`double_1` double DEFAULT NULL,
`double_2` double DEFAULT NULL,
`decimal_1` decimal(10,5) DEFAULT NULL,
`decimal_2` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `_numerics`
(
`float_1`,
`float_2`,
`double_1`,
`double_2`,
`decimal_1`,
`decimal_2`
)
VALUES
(
1.3,
1.3,
1.3,
1.3,
1.30000,
1.30000
);
Run Code Online (Sandbox Code Playgroud)