MySQL 浮点数类型
MySQL 浮点数类型用于存储带小数的数值,分近似值和精确值两类。
类型对照表
| 类型 | 字节 | 精度 | 用途 |
|---|---|---|---|
| FLOAT | 4 | 单精度 | 科学计算 |
| DOUBLE | 8 | 双精度 | 科学计算 |
| DECIMAL | 可变 | 精确值 | 金额计算 |
基本语法
SQL
-- 浮点数定义
CREATE TABLE measurements (
temp FLOAT,
distance DOUBLE,
price DECIMAL(10, 2) -- 总共10位,小数2位
);
-- 插入数据
INSERT INTO measurements VALUES (36.5, 1234.5678, 99.99);
FLOAT 与 DOUBLE
SQL
-- FLOAT 单精度(约7位有效数字)
CREATE TABLE sensor_data (
temperature FLOAT,
humidity FLOAT
);
-- DOUBLE 双精度(约15位有效数字)
CREATE TABLE scientific_data (
measurement DOUBLE,
coefficient DOUBLE
);
DECIMAL 精确值
SQL
-- DECIMAL 用于金额等需要精确计算的场景
CREATE TABLE orders (
id INT,
amount DECIMAL(10, 2), -- 最大99999999.99
tax_rate DECIMAL(5, 4) -- 如 0.0825
);
INSERT INTO orders VALUES (1, 1234.56, 0.0825);
-- 精确计算示例
SELECT amount * tax_rate AS tax FROM orders WHERE id = 1;
金额等财务数据必须使用 DECIMAL,避免 FLOAT/DOUBLE 的精度丢失。
要点总结
- FLOAT/DOUBLE 是近似值,可能存在精度丢失
- DECIMAL 是精确值,适合金额计算
- DECIMAL(M, D) 中 M 是总位数,D 是小数位数
- 科学计算用 FLOAT/DOUBLE,财务计算用 DECIMAL
📝 发现内容有误?点击此处直接编辑