对于小数的表示,MySQL分为两种方式:浮点数和定点数。浮点数包括float(单精度),double(双精度),而定点数只有decimal一种表示。定点数在MySQL内部以字符串的形式存放,比浮点数更精确,所以适合用来表示货币等精度高的数据。

概念:

浮点数和定点数都可以用类型名称后加“(M,D)”的方式来表示,“(M,D)”表示该值一共显示M为数字(整数+小数位),其中D位位于小数点后面,M和D又称为精度和标度,例如,定义为float(7,4)的一个列可以显示为-999.9999。

MySQL保存值得时候进行四舍五入,如果在float(7,4)列内插入999.00009,近似结果是999.0001。值得注意的是,浮点数后面跟“(M,D)”的用法是非标准用法,如果要用于数据库的迁移,则最好不要这么使用。float个double在不指定精度时,默认会按照实际精度(由实际的硬件和操作系统决定)来显示,而decimal在不指定精度的时候,磨人的整数位是10,小数位是0。

实际操作看一下吧:

(1)创建测试表,分别将id1,id2,id3字段设置为float(5.2),double(5,2),decimal(5,2);

CREATE TABLE `t1` (`id1` float(5,2) NOT NULL,`id2` double(5,2) NOT NULL,`id3` decimal(5,2) NOT NULL
)

(2)都插入数据1.23

insert into t1 values(1.23,1.23,1.23)

可以看到数据都正确的插入了

(3)再向id1,id2插入数据1.234,而id3依然插入1.23

insert into t1 values(1.234,1.234,1.23);


可以看到,数据都正常插入,但是因为float和double的标度限制,舍去了最后一位,而变成了1.23

(4)同是向三个字段都插入1.234试试呢

insert into t1 values(1.234,1.234,1.234)

结果依然是

此时虽然数据都插入进去,但是如果命令行形式的话会抛出一个Warning,报告id3被截断,如果是在传统的SQLMode,这条记录是无法插入的。

(5)接下来试试吧所有的精度和标度全部取消,再次插入1.23

alter table t1 modify id1 float;
alter table t1 modify id1 double;
alter table t1 modify id1 decimal;insert into t1 values(1.23,1.23,1.23);


这时候发现id1,id2都正常插入数据,而id3的小数点位被截断。

上面这个例子验证了上面提到的浮点数如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动四舍五入插入,系统不会报错,;
而decimal(定位数)如果不写精度,则默认按照decimal(10,0)来进行操作,并且如果超出了精度和标度值,系统会报错。

Mysql数值类型之float,double,decimal相关推荐

  1. java sql 写入 float_SQL Server的小数数值类型(float 和 decimal)用法

    在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值.其他小数类型,都可以使用float和decimal来替代,例如,双精度(double ...

  2. C# int uint long ulong byte sbyte float double decimal 范围,及类型!

    C# int uint long ulong byte sbyte float double decimal 范围,及类型! static void Main(string[] args){Conso ...

  3. mysql数值类型总结及常用函数

    最近在学习下,总结一下mysql数值类型: mysql字符类型分: 1.整数类型: 字节                    值范围 INTERGER               1         ...

  4. 20141230 mysql数值类型和列属性一

    20141230 mysql数值类型和列属性一 回顾 数据库基础知识,关系型数据库(行/记录,列/字段,SQL) 基本SQL操作:库操作,表操作(字段)和数据操作 字符集 校对集 1. 什么是校对集? ...

  5. 20141230 mysql数值类型和列属性二

    20141230 mysql数值类型和列属性二 枚举字符串 枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串.(单选 ...

  6. mysql float 怎么设置长度_MySQL中float double decimal区别总结

    作者:极客小俊 一个专注于web技术的80后 你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人! 下表中规划了每个浮点类型的存储大小和范围: 类型大小范围(有符号)范围(无符号)用途fl ...

  7. mysql小数类型字段_mysql小数类型字段,float,double

    mysql float double类型 1.float类型 float列类型默认长度查不到结果,必须指定精度, 比如 num  float,  insert into  table (num) va ...

  8. 谈谈MySQL如何选择float, double, decimal

    前言 我们知道在MySQL中有3种类型可以表示实数,分别是float,double和decimal.关于如何合理得使用这三种类型,网上的答案也层出不穷.但是究竟该选择哪一种类型,好像并没有统一的答案, ...

  9. mysql 数值类型 长度_mysql中的数据类型的长度

    位,字节,字 --------------------------------------------------------------- 8位(bit)=1字节(Byte),1024字节=1KB: ...

最新文章

  1. NVIDIA深度学习Tensor Core性能解析(上)
  2. ssh_exchange_identification: Connection closed by remote host 解决方法
  3. 孤岛营救与汽车加油行驶问题
  4. acwing----春季每日一题2022篇(一)
  5. 命令行输入mysql不行_MySQL命令行无法插入中文数据
  6. 500万相机芯片尺寸_MGS二代系列500万像素新品面世
  7. QlikView线图高亮选择尺寸
  8. CURL的学习和应用
  9. 【持续更新】组合博弈题目集合
  10. vuex实例方法replaceState解决vuex页面刷新数据丢失问题
  11. mac安装仿宋GB2312字体
  12. 电脑键盘上的快捷建大全
  13. Basic Operators (基本运算符)
  14. 数据结构与算法80道
  15. ubuntu 17.04安装为知笔记
  16. 报告|中国智能音箱已入局全球市场,双重商业模式迅速扩张
  17. 六年级下计算机课ppt课件ppt课件,人教版六年级数学下册
  18. Qt实战开发-仪表盘制作
  19. 【SEO】从搜索引擎工作过程来分析如何进行搜索引擎优化
  20. python写的hadoop实战_python api 实战

热门文章

  1. 数字图像处理——高斯噪声和椒盐噪声区别
  2. 疑似1.59亿LinkedIn领英客户数据库正在以99美元的价格被售卖
  3. 移动端APM网络监控与优化方案
  4. 这个由中国黑客研究的“超级欺骗系统”,究竟能做什么?
  5. 【软件】Notepad++的安装及其相关问题(32位)
  6. 英语连接词~很全的版本!!!
  7. 手机页面底部浮动的按钮
  8. 美国人口普查数据预测收入sklearn算法汇总3之ROC: KNN,LogisticRegression,RandomForest,NaiveBayes,StochasticGradientDece
  9. 要赶超耐克中国?安踏集团2021年收入劲增至近500亿元,FILA品牌贡献近半 | 美通社头条...
  10. 13种老人不适合带孩子_老人带小孩要注意的13种不恰当行为必须纠正!