前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL面试必问的decimal与float, double的问题

MySQL面试必问的decimal与float, double的问题

作者头像
小白的大数据之旅
发布2025-01-08 09:25:20
发布2025-01-08 09:25:20
5800
代码可运行
举报
运行总次数:0
代码可运行

decimal与float, double的区别是什么?

面试官提出的问题

在MySQL数据库中,我们经常需要存储和处理小数数据。decimal、float和double是MySQL中用于存储小数的三种主要数据类型。请问你能解释一下它们之间的主要区别吗?并提供一些代码案例来展示它们在实际应用中的不同表现。

问题的重点

  1. 精度:不同数据类型能够表示的小数位数和有效数字的精度。
  2. 存储空间:每种数据类型在内存中所占用的字节数。
  3. 使用场景:不同数据类型适用的场景,特别是在对精度要求高的场合下的表现。

面试者如何回答

  1. 精度 float:单精度浮点数,能精确到小数点后6位,用32位二进制表示。 double:双精度浮点数,能精确到小数点后15位,用64位二进制表示。 decimal:定点数,可以指定精度和标度,常用于金融运算,不会出现浮点数计算的误差。
  2. 存储空间 float:占用4个字节(32位)。 double:占用8个字节(64位)。 decimal:存储形式为每9位十进制数存储为4个字节,具体占用空间取决于定义的精度和标度。
  3. 使用场景 float:适用于表示范围较大但精度要求不高的数值。 double:适用于对精度要求较高且可以接受较小数值范围的场合。 decimal:适用于对精度要求极高的场景,如货币计算。
代码案例

下面是一个包含float、double和decimal字段的表创建语句,以及插入和查询数据的示例:

代码语言:javascript
代码运行次数:0
复制
-- 创建包含float, double, decimal字段的表
CREATE TABLE test_numbers (
    float_column FLOAT COMMENT '单精度浮点数',       -- 注释:单精度浮点数列
    double_column DOUBLE COMMENT '双精度浮点数',     -- 注释:双精度浮点数列
    decimal_column DECIMAL(10, 2) COMMENT '定点数'   -- 注释:定点数列,总长度为10位,小数部分为2位
);

-- 插入数据
INSERT INTO test_numbers (float_column, double_column, decimal_column) 
VALUES 
(123.456789, 123.456789123456, 123.45),             -- 插入浮点数和定点数数据
(0.1 + 0.2, 0.1 + 0.2, 0.30);                       -- 插入浮点数运算结果和定点数运算结果

-- 查询数据
SELECT * FROM test_numbers;
  • CREATE TABLE语句创建了一个名为test_numbers的表,包含三个字段:float_column(单精度浮点数)、double_column(双精度浮点数)和decimal_column(定点数,总长度为10位,小数部分为2位)。
  • INSERT INTO语句插入了两行数据。第一行数据直接插入了浮点数和定点数值。第二行数据插入了浮点数运算结果(0.1 + 0.2)和定点数运算结果(0.30)。
  • SELECT * FROM test_numbers;语句查询并显示表中的所有数据。

运行结果说明:

  • 第一行数据中,float_column和double_column存储的值由于浮点数的精度限制,可能无法精确表示123.456789和123.456789123456,而decimal_column能够精确表示123.45。
  • 第二行数据中,由于浮点数的舍入误差,float_column和double_column存储的0.1 + 0.2的结果可能不是精确的0.3,而是一个近似值。而decimal_column能够精确表示0.30。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • decimal与float, double的区别是什么?
    • 面试官提出的问题
    • 问题的重点
    • 面试者如何回答
      • 代码案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档