• mysql中decimal的使用


    float,double,decimal区别

    创建表test_float_double_decimal

    CREATE TABLE `test_float_double_decimal` (
      `id` int(11) NOT NULL COMMENT 'id',
      `float7.4` float(7,4) NOT NULL,
      `float255.30` float(255,30) NOT NULL,
      `double15.4` double(15,4) NOT NULL,
      `double255.30` double(255,30) NOT NULL,
      `decimal10.4` decimal(10,4) NOT NULL,
      `decimal65.30` decimal(65,30) NOT NULL,
      `float_default` float NOT NULL,
      `double_default` double NOT NULL,
      `decimal_default` decimal(10,0) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    INSERT INTO `test_float_double_decimal`(`float7.4`, `float255.30`, `double15.4`, `double255.30`, `decimal10.4`, `decimal65.30`, `float_default`, `double_default`, `decimal_default`) VALUES (789.123456789,123456789.123456789,123456789.123456789,123456789.123456789,789.123456789,123456789.123456789,123456789.123456789,123456789.123456789,123456789.123456789);
    
    
    INSERT INTO `test_float_double_decimal`(`float7.4`, `float255.30`, `double15.4`, `double255.30`, `decimal10.4`, `decimal65.30`, `float_default`, `double_default`, `decimal_default`) VALUES (789.123456789,12345678987654321.12345678987654321,12345678987.12345678987654321,12345678987654321.12345678987654321,789.12345678987654321,12345678987654321.12345678987654321,12345678987654321.12345678987654321,12345678987654321.12345678987654321,1234567898.12345678987654321);
    


    第一条数据插入后,float都跑偏了,double还算正常(最后位值四舍五入),decimal正常(最后位值四舍五入)。

    第二条数据插入后发现,float跑偏最严重,double也开始有些跑偏。decimal最正常。

    decimal详情

    decimal(a,b)
    

    参数说明
    a指定指定小数点左边和右边可以存储的十进制数字的最大个数,默认是10,最大精度65。
    b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0,最大值为30。
    备注
    DECIMAL数据类型用于要求非常高的精确度的计算中,这些类型允许指定数值的精确度和计数方法作为选择参数。精确度在这里是指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的个数。例如,语句DECIMAL (5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。

    总结:像坐标,钱这样的数据,对于精度要求高的,可以采用decimal来进行存储。

    decimal(10,2) 表示钱,decimal(10,6)可以表示坐标。
    

    项目中的数据表中存储坐标,使用了float,结果如下。

    数据都丢失了,本来后面是6位小数的,经过上面的实验总结,适合改为使用decimal来进行存储,double也还可以,不过需要设置好位数。

  • 相关阅读:
    第九周总结
    第八周总结
    第六周
    中国历史上成功的两个人
    第五周总结
    第四周总结
    关于IT行业的抄袭事件
    第三周总结
    第二周总结
    第九周
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8962116.html
Copyright © 2020-2023  润新知