mysql float和double类型的区别

mysql float和double类型的区别,第1张

一、数据类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

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

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

类型大小范围(有符号)范围(无符号)unsigned约束用途TINYINT1 字节(-128,127)(0,255)小整数值SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值FLOAT4 字节

float(255,30)(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度

浮点数值DOUBLE8 字节

double(255,30)(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度

浮点数值DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

double(65,30)依赖于M和D的值依赖于M和D的值小数值1.1 int整数示例

# 创建表一个是默认宽度的int,一个是指定宽度的int(5)

mysql>create table t1 (id1 int,id2 int(5))

Query OK, 0 rows affected (0.02 sec)

# 像t1中插入数据1,1

mysql>insert into t1 values (1,1)

Query OK, 1 row affected (0.01 sec)

# 可以看出结果上并没有异常

mysql>select * from t1

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

| id1 | id2 |

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

| 1 | 1 |

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

row in set (0.00 sec)

# 那么当我们插入了比宽度更大的值,会不会发生报错呢?

mysql>insert into t1 values (111111,111111)

Query OK, 1 row affected (0.00 sec)

# 答案是否定的,id2仍然显示了正确的数值,没有受到宽度限制的影响

mysql>select * from t1

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

| id1 | id2 |

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

| 0000000001 | 00001 |

| 0000111111 | 111111 |

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

rows in set (0.00 sec)

float和double的区别在于:变量类型不同、指数范围不同、表达式指数位不同、占用内存空间不同以及有效位数不同。其中float数据类型用于存储单精度浮点数或双精度浮点数,而double即双精度浮点型使用64位来储存一个浮点数。

扩展资料

一、float和double的含义介绍

float即单精度浮点型,用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个8位二进制指数和一个23位尾数。由于尾数的.高顺序位始终为1,因此它不是以数字形式存储的。此表示形式为 float 类型提供了一个大约在 -3.4E+38 ~ 3.4E+38 之间的范围。

而double即双精度浮点型,它是计算机使用的一种资料型别,比起float,double使用 64 位 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。

二、float和double的区别1、变量类型不同

float属于单精度型浮点数据,double属于双精度型浮点数据。

2、指数范围不同

float的指数范围为-127~128,double的指数范围为-1023~1024。

3、表达式指数位不同

float的表达式为1bit(符号位)+8bits(指数位)+23bits(尾数位);double的表达式为1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)。

4、占用内存空间不同

float占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38;double占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。

5、有效位数不同

float只能提供七位有效数字,double可提供16位有效数字。

mysql 数据库float,int,bigint,double区别

单精度浮点数(float)的尾数是用24bit表示的,双精度(double)浮点数的尾数是用53bit表示的,转换成十进制: 2^24 - 1 = 16777215 2^53 - 1 = 9007199254740991 由上可见,IEEE754单精度浮点数的有效数字二进制是24位,按十进制来说


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10035541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存