FLOAT

32 位单精度浮点类型(FLOAT)遵循 IEEE 754 标准,有效精度约为 6 到 7 位十进制数字。适合存储不需要精确计算的实数,精确计算场景请使用

DECIMAL
DECIMAL

语法

FLOAT REAL

REAL
REAL
FLOAT
FLOAT
的别名,用于兼容其他数据库的迁移脚本。别名在解析时立即转换为规范类型,详见类型别名

值范围

  • 最大正值:约 3.4028235 × 10³⁸
  • 最小正值(非零):约 1.4 × 10⁻⁴⁵
  • 字面量后缀:
    F
    F
    (如
    1.5F
    1.5F
    -3.2F
    -3.2F

示例

  1. 使用 FLOAT 字面量后缀:

    SELECT 1.5F;

    返回:

    1.5
    1.5

  2. 将整数转换为 FLOAT:

    SELECT CAST(6 AS FLOAT);

    返回:

    6.0
    6.0

  3. 将字符串转换为 FLOAT:

    SELECT CAST('3.14' AS FLOAT);

    返回:

    3.14
    3.14

  4. 精度损失示例:

    SELECT CAST(1234567.89 AS FLOAT);

    返回:

    1234568.0
    1234568.0
    (超出 7 位有效数字,发生精度损失)

  5. NULL 值处理:

    SELECT CAST(NULL AS FLOAT);

    返回:

    NULL
    NULL

选型建议

场景推荐类型原因
金融金额、精确计算
DECIMAL
DECIMAL
精确小数,无浮点误差
科学计算、高精度统计
DOUBLE
DOUBLE
精度约 15-17 位,是 FLOAT 的两倍
ML 特征值、向量元素
FLOAT
FLOAT
精度够用(6-7位),存储比 DOUBLE 节省一半
与其他系统兼容
FLOAT
FLOAT
/
REAL
REAL
REAL
REAL
FLOAT
FLOAT
的别名

FLOAT 与 DOUBLE 精度对比(实测):

SELECT CAST(3.14159265358979 AS FLOAT) AS f, -- 3.1415927410125732(7位后失真) CAST(3.14159265358979 AS DOUBLE) AS d; -- 3.14159265358979(完整保留)

注意事项

  • FLOAT 是近似数值类型,有效精度约 6-7 位,不适合金融金额等需要精确计算的场景,请使用
    DECIMAL
    DECIMAL
  • 避免用
    =
    =
    直接比较两个 FLOAT 值,精度误差可能导致意外结果。
  • 算术溢出返回
    Infinity
    Infinity
    -Infinity
    -Infinity
    sqrt(-1)
    sqrt(-1)
    等无效运算返回
    NaN
    NaN
  • CAST 转换无效字符串时返回 NULL。
联系我们
预约咨询
微信咨询
电话咨询