mysql 数据类型 Float、Double、Decimal和Numeric 的区别
mysql 数据类型 Float、Double、Decimal和Numeric 的区别
前几天解决了一个这样的问题:数据是从一个地方爬取过来的,爬取前显示的数据是 901.63 ;然后,爬取数据脚本最后计算的总和也是901.63 一切都没有问题;
但是,我们通过自己的数据库mysql计算出来的值就是601.62。查看了数据条数和对应的值都是对的,把数据导出到Excel后,数据求和也是 901.63,这不是怪了。
最后发现是 mysql数据库字段设置了Float搞的鬼。
其实,这是个老生常谈的问题了,这里做下备注,以便以后查阅
MySQL中存在Float,Double等非标准数据类型,也有Decimal、Numeric这种标准数据类型。
其区别在于,Float,Double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。
Float数值类型用于表示单精度浮点数值,而Double数值类型用于表示双精度浮点数值,Float和Double都是浮点型,而Decimal是定点型;
MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,
如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
Float和Double在不指 定精度时,默认会按照实际的精度来显示,而Decimal在不指定精度时,默认整数为10,小数为0
同时,对数据求SUM()时会出现不同的结果,Float和Double求SUM都会出现很多小数点,而Decimal求SUM得到的是精准数值:
decimal 和 numeric 是同义,都是用于精确存储数值 。
综上所述:
Mysql 存储小数的时候,大多数和金额有关系。Float和Double存在精度的问题,所以首选还是要用 Decimal和Numeric,就我个人而言 Numeric 用的比较多。
网上相关的例子也比较多贴出来,也可以看一下
http://www.th7.cn/db/mysql/201411/82120.shtml
http://blog.sina.com.cn/s/blog_7e89c3f50101eh7t.html
http://www.cnblogs.com/gulibao/p/5416245.html
http://www.cnblogs.com/qiantuwuliang/archive/2010/11/03/1867802.html
以上文章都是说的一个事,看看就好了
mysql 数据类型 Float、Double、Decimal和Numeric 的区别
相关推荐
- php解析html 中的php
- Posted on 05月09日
- 世界,你好!
- Posted on 12月13日
- Js中apply和call方法详解
- Posted on 05月14日
- mongoDB常用操作命令 终端常用操作命令
- Posted on 07月15日