标签(空格分隔): MYSQL

MYSQL版本:MYSQL5.7

基本语法

FLOAT(浮点类型)用来存储很大或很小的值。这可能是由小数点前的30位、100位或者更多位组成的数字,或者小数点后拥有很多位的数字。考虑那些小数点后的位数为无限多的数值,例如众所周知的圆周率,1/3。然而对于一个浮点类型可用的存储空间有限,有时候无法存储真正的数值。如果一个数值非常大或非常小,将会存储一个近似值。这就是为什么有时把他们叫做估计值。

在DECIMALL类型中,小数点在每个值中位置相同。但是对于浮点类型,在每个值中,小数点可以在任何地方。换句话说,小数点是浮动的。这就是为什么我们称她位浮点类型。

MYSQL有两个浮点类型:单精度(FLOAT),双精度(DOUBLE)。他们的区别在于使用的存储空间大小不同,因此值的范围也不同。都不能UNSIGNED。

取值范围

类型说明

正区间

负区间

单精度(FLOAT)

[ –3.402823466E38 , –1.175494351E-38 ]

[ 1.175494351E-38 , 3.402823466E38]

双精度(DOUBLE)

[ –1.7976931348623157E308,–2.2250738585072014E-308 ]

[ 2.2250738585072014E-308 , 1.7976931348623157E308 ]

声明语法是

FLOAT(M)

FLOAT[(M,D)] [ZEROFILL]

指定一个参数

如果M在[0,24] 是一个单精度浮点数,如果M在[25,53]则是双精度浮点数。

指定两个参数。

在这种情况下,两个参数被看作是浮点数的宽度和刻度。指定宽度和刻度将自动成为一个单精度浮点类型。

创建表fl1,使用默认类型FLOAT,并存储几个值

建表

CREATE TABLE `fl1` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1mysql> insert into fl1(fl) values(12345);

Query OK, 1 row affected (0.53 sec)

mysql> insert into fl1(fl) values(123456);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl1(fl) values(1234567);

Query OK, 1 row affected (0.06 sec)

mysql> insert into fl1(fl) values(12345678);

Query OK, 1 row affected (0.04 sec)

mysql> insert into fl1(fl) values(1.2345);

Query OK, 1 row affected (0.81 sec)

mysql> insert into fl1(fl) values(1.23456);

Query OK, 1 row affected (0.06 sec)

mysql> insert into fl1(fl) values(1.234567);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl1(fl) values(1.2345678);

Query OK, 1 row affected (0.06 sec)

mysql> select * from fl1;

+----+----------+

| id | fl |

+----+----------+

| 1 | 12345 |

| 2 | 123456 |

| 3 | 1234570 |

| 4 | 12345700 |

| 5 | 1.2345 |

| 6 | 1.23456 |

| 7 | 1.23457 |

| 8 | 1.23457 |

+----+----------+

8 rows in set (0.00 sec)

小结:

默认的float类型只能存6个数字(包括小数部分和整数部分)。整数或者小数超过6位,超过的部分就会四舍五入

新建表fl2,指定M为20

CREATE TABLE `fl2` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1mysql> insert into fl2(fl) values(12345);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl2(fl) values(123456);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl2(fl) values(1234567);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl2(fl) values(12345678);

Query OK, 1 row affected (0.08 sec)

mysql> insert into fl2(fl) values(1.2345);

Query OK, 1 row affected (0.09 sec)

mysql> insert into fl2(fl) values(1.23456);

Query OK, 1 row affected (0.04 sec)

mysql> insert into fl2(fl) values(1.234567);

Query OK, 1 row affected (0.04 sec)

mysql> insert into fl2(fl) values(1.2345678);

Query OK, 1 row affected (0.08 sec)

mysql> select * from fl2;

+----+----------+

| id | fl |

+----+----------+

| 1 | 12345 |

| 2 | 123456 |

| 3 | 1234570 |

| 4 | 12345700 |

| 5 | 1.2345 |

| 6 | 1.23456 |

| 7 | 1.23457 |

| 8 | 1.23457 |

+----+----------+

8 rows in set (0.00 sec)

小结:

默认float和float(m)一样 ,m<=24时都是默认float类型,都只能存6个数字(包括小数点前后的位数),整数超过6位就被四舍五入

新建表fl3,使用FLOAT(M,D)指定字段

CREATE TABLE `fl3` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float(7,4) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1mysql> insert into fl3(fl) values(123);

Query OK, 1 row affected (0.74 sec)

mysql> insert into fl3(fl) values(1234);

ERROR 1264 (22003): Out of range value for column 'fl' at row 1

mysql> truncate fl3;

Query OK, 0 rows affected (0.92 sec)

mysql> insert into fl3(fl) values(123);

Query OK, 1 row affected (0.06 sec)

mysql> insert into fl3(fl) values(1234);

ERROR 1264 (22003): Out of range value for column 'fl' at row 1

mysql> insert into fl3(fl) values(123.4567);

Query OK, 1 row affected (0.06 sec)

mysql> insert into fl3(fl) values(123.45678);

Query OK, 1 row affected (0.06 sec)

mysql> insert into fl3(fl) values(123.45679);

Query OK, 1 row affected (0.05 sec)

mysql> select * from fl3;

+----+----------+

| id | fl |

+----+----------+

| 1 | 123.0000 |

| 2 | 123.4567 |

| 3 | 123.4568 |

| 4 | 123.4568 |

+----+----------+

4 rows in set (0.00 sec)

小结:

FLOAT(M,D) 整数部分为 (M-D)个数,超出个数则报错,小数部分为D个数,超出个数则四舍去五入

新建表fl4,FLOAT字段中M和D相等

mysql> show create table fl4 \G

***************************1. row ***************************

Table: fl4

Create Table: CREATE TABLE `fl4` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float(4,4) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1

1 row in set (0.00 sec)mysql> insert into fl4(fl) values(1);

ERROR 1264 (22003): Out of range value for column 'fl' at row 1

mysql> insert into fl4(fl) values(0.1);

Query OK, 1 row affected (0.08 sec)

mysql> insert into fl4(fl) values(0.12);

Query OK, 1 row affected (0.07 sec)

mysql> insert into fl4(fl) values(0.123);

Query OK, 1 row affected (0.04 sec)

mysql> insert into fl4(fl) values(0.1234);

Query OK, 1 row affected (0.08 sec)

mysql> insert into fl4(fl) values(0.12345);

Query OK, 1 row affected (0.08 sec)

mysql> select * from fl4;

+----+--------+

| id | fl |

+----+--------+

| 5 | 0.1000 |

| 6 | 0.1200 |

| 7 | 0.1230 |

| 8 | 0.1234 |

| 9 | 0.1234 |

+----+--------+

5 rows in set (0.00 sec)

小结:

当M=D时,依然遵循FLOAT(M,D)的规则,只是整数部分只能为0.

新建表fl5,FLOAT字段中M > 24

CREATE TABLE `fl5` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float(30) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

mysql> show create table fl5 \G

*************************** 1. row ***************************

Table: fl5

Create Table: CREATE TABLE `fl5` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` double DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

小结:

在FLOAT(M)中,M > 25,自动转为DOUBLE类型

新建表fl6,FLOAT字段中M = 100,D = 3

mysql> show create table fl6 \G

***************************1. row ***************************

Table: fl6

Create Table: CREATE TABLE `fl6` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`fl` float(100,3) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1

1 row in set (0.00 sec)mysql> insert into fl6 values(5,777777777777777777777777777.5555);

Query OK, 1 row affected (0.35 sec)

mysql> select * from fl6;

+----+---------------------------------+

| id | fl |

+----+---------------------------------+

| 5 | 777777744225350500000000000.000 |

+----+---------------------------------+

1 row in set (0.00 sec)

小结:

在FLOAT(M,D)中,M设置很大不会影响数据类型,还是FLOAT,但是数据会变得不准。

mysql类型float_Mysql数据类型---FLOAT相关推荐

  1. mysql 类型_MySQL 数据类型有哪些?

    学会自定义表中每一个字段(列)的数据类型,对学习SQL数据库以及性能调优有着很大的帮助! 数据类型是啥?它可以用来表示某个 字段(列) 的数据内容格式是数字(例123)还是字符(例"一二三& ...

  2. mysql 类型_MySQL数据类型

    MySQL与SQLServer的数据类型大同小异.因此,可以忽略与SQLServer相同的地方,在SQLServer的基础上学习. 一.整型的显示宽度 MySQL数据类型与SQLServer有些不同, ...

  3. mysql 类型解释_MySQL 数据类型说明解释

    在 MySQL 中,有三种主要的类型:Text(文本).Number(数字)和 Date/Time(日期/时间)类型. Text 类型: 数据类型描述 CHAR(size) 保存固定长度的字符串(可包 ...

  4. mysql类型说明_MYSQL 数据类型说明

    MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...

  5. mysql long类型_MySQL数据类型笔记

    引言 作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道.而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术.最近在工作 ...

  6. mysql 负数类型_MySQL数据类型详解

    MySQL数据类型,可以被分为3类:数值类型.日期和时间类型以及字符串(字符)类型 方括号("["和"]")指出可选的类型修饰符的部分 M 指出最大的显示尺寸. ...

  7. mysql存储函数声明float_mysql存储float

    Mysql中,int(10)和int(11)的区别 int(M) M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关 首先说一下mysql的数值类型,MySQL支 ...

  8. mysql 类型后面加括号_MySQL数据类型及后面小括号的意义

    1,数值类型 1.1数值类型的种类 标准 SQL 中的数值类型,包括严格数值类型(INTEGER.SMALLINT.DECIMAL.NUMERIC),以及近似数值数据类型(FLOAT.REAL.DOU ...

  9. mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突

    mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突 实体Bean public class Broke {/*** brokeid */BigInteger br ...

  10. 零基础带你学习MySQL—MySQL常用的数据类型(列类型)(五)

    零基础带你学习MySQL-MySQL常用的数据类型(列类型)(五)

最新文章

  1. java byte数组转string_Java调用C++接口(初步了解)
  2. Bean实例化三种方式
  3. 年年传、年年鸽!iPhone “神机”又被曝光了,明年年初亮相?
  4. .Net中的加密解密
  5. 群晖NAS设备安装和基础操作详细流程(例:DS920+)
  6. Matlab最小二乘系统辨识
  7. JMeter(三):后置处理器[Regular Expression Extractor]
  8. linux下好用的chm阅读器
  9. 今天美国大学计算机硕士放榜吗,美国大学研究生offer放榜时间一般是什么时候?别错过哟!...
  10. iOS 视图,动画渲染机制探究
  11. 网上教务评教管理系统
  12. 【教程】Unity账号注册和Unity Hub激活
  13. iOS日常开发之常用单词、名词注释
  14. 系统调用recvfrom和recv区别
  15. windows下putty自动登录和窗口显示IP
  16. 手机二维码识别软件3秒破译火车票信息
  17. rtl8169网卡驱动
  18. Android像素单位dp,sp,px,pt的区别和比较
  19. webgame游戏模式分析二
  20. 小型水库雨水情测报及大坝安全监测系统

热门文章

  1. MyBatis-Plus——代码自动生成器
  2. 2017美国数学建模MCM C题(大数据)翻译 “合作和导航”
  3. 文件源路径太长无法删除
  4. [MFC] 手动美化 MFC 窗体
  5. sql2005下载地址
  6. linux设置文件最大权限,linux chmod 数字设置权限(最大权限)
  7. java 名片通讯录,jsp实现通讯录系统
  8. 360html5播放加速,总结:没有讨论加速问题,“视频快速观看”完全支持360种浏览器...
  9. tcp/ip协议详解
  10. CIC Dips Its Toe Back In US Waters