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也还可以,不过需要设置好位数。

mysql中decimal的使用的更多相关文章

  1. MySQL中 DECIMAL FLOAT DOUBLE的区别

    第一篇文章: MySQL中Decimal类型和Float Double等区别 MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,d ...

  2. MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  3. MySQL中Decimal类型和Float Double等区别

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  4. mysql中 decimal、numeric数据类型

    例 如:salary DECIMAL(5,2) 在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数.在这种情况下,因 ...

  5. mysql 中decimal中去掉后面多余的0

    #去除Decimal后面多余的0 #处理前SELECT '0.12000','1.203010','-0.20' #处理后SELECT 0+CAST('0.12000' AS CHAR),0+CAST ...

  6. ***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)

    float,decimal精确度比较   float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的, 用于定义货币要求精确 ...

  7. Mysql中NUMERIC和DECIMAL类型区别比较

    decimal(numeric ) 同义,用于精确存储数值 . decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表 ...

  8. mysql中float、double、decimal三种类型,以及数值产生误差的原因

    单精度浮点数用4字节(32bit)表示浮点数,采用IEEE754标准的计算机浮点数,在内部是用二进制表示的,如:7.22用32位二进制是表示不下的,所以就导致不精确了,存取会出现误差. mysql中f ...

  9. MySQL中 tinyint、bigint、bit、text、decimal、year、date、time、datetime、timestamp等对应Java中什么类型

    MySQL中字段名称对应的Java类型 MySQL字段名 Java数据类型 varchar String text String bigint Long(已经有长度了,在mysql建表中的length ...

随机推荐

  1. NOIp十连测 涂色游戏

    [问题描述]小A 和小B 在做游戏.他们找到了一个n 行m 列呈网格状的画板.小A 拿出了p 支不同颜色的画笔,开始在上面涂色.看到小A 涂好的画板,小B 觉得颜色太单调了,于是把画板擦干净,希望涂上 ...

  2. js中给正则传参、传递变量

    js中验证字符串有时需要用到正则表达式,一般情况下直接写正则进行验证就行. 但是遇到需要把部分正则作为参数传递就麻烦一点,需要用到RegExp()对象. <script type="t ...

  3. rbac组件之权限初始化(五)

    当用户登陆后,根据用户的角色要为用户生成对应的权限菜单,此时需要将登陆的用户信息获取且获取角色信息,从数据库中获取菜单以及权限信息,并且存入session中. 1.权限流程 第一次请求的页面是登陆页面 ...

  4. Java线上应用故障排查

    线上故障主要2种: CPU利用率很高, 内存占用率很大 一.CPU利用率很高 1. top查询那个进程CPU使用率高 2. 显示进程列表 ps -mp pid -o THREAD,tid,time 找 ...

  5. 4_蒙特卡罗算法求圆周率PI

    题目 蒙特卡罗算法的典型应用之一为求圆周率PI问题. 思想: 一个半径r=1的圆,其面积为:S=PI∗r2=PI/4 一个边长r=1的正方形,其面积为:S=r2=1 那么建立一个坐标系,如果均匀的向正 ...

  6. Qt 安装与配置记录

    一 安装的时候得选一个Qt安装啊!!不要忘了展开这一项,而只安装Qt creator 展开之后会发现有很多版本,为了方便,选自带编译器mingw,就不需要麻烦的配置了 二 打开Qt creator 后 ...

  7. jquery对JSON字符串的解析--eval函数

    jquery eval解析JSON中的注意点介绍----https://www.jb51.net/article/40842.htm

  8. CSU 1225 最长上升子序列并记录其个数

    ;j<i;j++){ if(h[i] > h[j]){ ) cnt[i]+=cnt[j]; ) len[i] = len[j] + , cnt[i] = cnt[j]; } //身高相同的 ...

  9. Codeforces Round #264 (Div. 2) D

    题意: 给出最多5个序列,问这几个序列的最长公共子序列的长度是多少. solution : 脑抽级别我是,第一个序列每个数字位置固定,这样只要维护一个k-1维的偏序集就好了.然后在保证每个位置合法的情 ...

  10. [NOIP2007] 提高组 洛谷P1097 统计数字

    题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出 ...