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也还可以,不过需要设置好位数。
mysql中decimal的使用的更多相关文章
- MySQL中 DECIMAL FLOAT DOUBLE的区别
第一篇文章: MySQL中Decimal类型和Float Double等区别 MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,d ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- MySQL中Decimal类型和Float Double等区别
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- mysql中 decimal、numeric数据类型
例 如:salary DECIMAL(5,2) 在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数.在这种情况下,因 ...
- mysql 中decimal中去掉后面多余的0
#去除Decimal后面多余的0 #处理前SELECT '0.12000','1.203010','-0.20' #处理后SELECT 0+CAST('0.12000' AS CHAR),0+CAST ...
- ***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)
float,decimal精确度比较 float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的, 用于定义货币要求精确 ...
- Mysql中NUMERIC和DECIMAL类型区别比较
decimal(numeric ) 同义,用于精确存储数值 . decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表 ...
- mysql中float、double、decimal三种类型,以及数值产生误差的原因
单精度浮点数用4字节(32bit)表示浮点数,采用IEEE754标准的计算机浮点数,在内部是用二进制表示的,如:7.22用32位二进制是表示不下的,所以就导致不精确了,存取会出现误差. mysql中f ...
- MySQL中 tinyint、bigint、bit、text、decimal、year、date、time、datetime、timestamp等对应Java中什么类型
MySQL中字段名称对应的Java类型 MySQL字段名 Java数据类型 varchar String text String bigint Long(已经有长度了,在mysql建表中的length ...
随机推荐
- MFC模拟鼠标点击
MFC 工程 把以下代码放到你想要响应的函数里面就行 CPoint pt; GetCursorPos(&pt);//获取鼠标在屏幕的当前位置 SetCursorPos(100,200);//移 ...
- 51nod 1057 n的阶乘 (压位优化)
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1057&judgeId=605203 使用压位进行优化, ...
- 样例GeoQuiz应用开发 第1章
1. Activity是Android SDK的Activity类的一个具体实例,负责管理用户和信息屏的交互.应用的功能是通过编写一个Activity子类来实现的.简单的可能只有一个子类,复杂的应用则 ...
- LeetCode(6) ZigZag Conversion
题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...
- 【BZOJ 2118】 墨墨的等式(Dijkstra)
BZOJ2118 墨墨的等式 题链:http://www.lydsy.com/JudgeOnline/problem.php?id=2118 Description 墨墨突然对等式很感兴趣,他正在研究 ...
- bzoj3262陌上花开 cdq分治入门题
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- BNUOJ 3278 Candies
Candies Time Limit: 1500ms Memory Limit: 131072KB This problem will be judged on PKU. Original ID: 3 ...
- cmake打印变量值
看下面的例子,我们在cmake定义了一个变量“USER_KEY”,并打印此变量值.status表示这是一般的打印信息,我们还可以设置为“ERROR”,表示这是一种错误打印信息. SET(USER_KE ...
- 2018/2/14 x-pack的学习
x-pack是什么?它能提供的作用如下,下面描述的这些功能都属于x-park:Shield: 提供对数据的 Password-Protect,以及加密通信.基于角色的权限控制,IP 过滤,审计,可以有 ...
- VS调试STL问题总结
---恢复内容开始--- 以前写代码总觉用自己写的东西比较牛逼,vector?stack?为什么不自己实现.后来才认识到这是个幼稚的想法!首先每次都自己实现是一种重复劳动:其次,自己写的话很难保证没有 ...