极客小俊
一个专注于web技术的80后
无需与智者争锋,只需超越那些懈怠者,你便能轻松胜过绝大多数人!

float类型适用于表示单精度浮点数,而类型则适用于表示双精度浮点数。
我们知道一个bytes(字节) 占8位 对吧!
float单精度数据类型用于存储浮点数,其长度为32位,即4个字节,这些位以二进制形式表示。
那么,双精度浮点类型在存储时占据8个字节的内存空间,其长度为64位,即8乘以8。因此,在内存中,双精度浮点数以64位二进制数的形式存在。借助这种长度,我们可以计算出更多的尾数。
尾数 : 就是小数点后的有多少个数位
因此,此处精度关键在于小数点后数字的多少,故依据IEEE二进制浮点数运算规范,我们得出如下结论:
float类型的单精度小数点后只能精确到第六位,算上小数点前的一位,总共能表示七个有效数字;而双精度小数点后可以精确到第十五位,同样加上小数点前的一位,有效数字达到十六位。因此,通过比较小数点后数字的位数长度,我们可以看出其精确度的差异,位数越多,精确度自然越高。
和 float 彼此的区别:
内存占用存在差异,单精度浮点数占据4个字节,而双精度浮点数则占用8个字节。有效数字的位数也有所区别,单精度的小数点后有效位数为7位,双精度的小数点后有效位数则是16位。数值的取值范围亦不同,遵循IEEE标准进行计算。在程序处理速度方面,通常CPU对单精度浮点数的处理速度要快于双精度浮点数。
和 float 彼此的优缺点:
float类型的单精度在部分处理器上的执行速度优于双精度,并且其占用的存储空间仅为双精度的一半。
缺点: 但是当值很大或很小的时候,它将变得不精确。
与float相比,其精度无疑更高,其尾数可达16位,而float的尾数精度仅为7位。
双精度数据类型占用内存较多,相当于 float 单精度数据类型的两倍。此外,其运算速度较慢,这是因为双精度数的尾数长度超过了 float,导致计算过程中产生了额外的开销。
如何选择 和 float 的使用场景!
首先: 能用单精度时不要用双精度 以省内存,加快运算速度!
当然,在需要小数部分且对精度要求不严格的情况下,选用float单精度浮点数类型是比较合适的!
由于小数点后位数较多,双精度计算在执行高速数学运算、科学运算以及卫星定位运算等任务时,其处理器的性能实际上优于单精度。因此,在需要确保计算精度保持多次迭代或处理极大数值的情况下,双精度计算模式无疑是更为理想的选择。
说这么多其实就是小数点后面的保留位数多少的问题!
小结和float:
float类型的小数部分位数较少,而能表示的小数位数更多,因而精度更高!操作简单,您可以根据实际情况自行决定使用哪一种。
和float 后面的长度m,d代表的是什么?
在表达式(m,d)以及float(m,d)中,m和d分别指的是什么?许多朋友对此并不十分明了!让我来继续为大家进行详细说明。
实际上,与之前的整型int(n)相似,这些数据类型同样配备了额外的参数:一个是用于指定显示宽度的m,以及另一个用于确定小数点后数字位数的d。
例如,语句float(7,3)所设定的显示数值不会超出七个字符,小数点后同样限定为三位数字,这一规则同样适用。
在MySQL数据库中,当设定表格中的列属性时,float、以及数据类型同样可以与和修饰符搭配使用,它们的作用与int数据类型并无二致。这一点在此处不再赘述。
小结:
在MySQL 语句中, 实际定义表字段的时候,
在float(M,D)格式中,M标识了可使用的数字的总位数,而D则指定了小数点之后应保留的位数,同时需要注意的是,这一格式下所涉及的数值均不得为负。
在(M,D)这一表达中,M符号表示允许使用的数字的总数,而D符号则指定了小数点之后需要保留的位数。
注意: M>=D!
类型
1.介绍
在存储相同范围的数值时,float类型通常所需空间较少,它仅占用4个字节,而类型则需占用8个字节。
而 依赖于M和D的值,所以使用更少的空间
在企业级开发实践中,我们常常需要处理涉及金额(例如3888.00元)的字段。此时,选择合适的数据类型至关重要。以MySQL数据库为例,其具体语法表述为:(M,D),其中M的取值范围在1至65之间,D的取值范围在0至30之间,并且D的值不得超出M的值。
2.最大值
该字段的类型为数据类型,其能够容纳的最大数值或数值区间是多少?比如,若给出的是(5,2),那么该字段便能够存储从-999.99至999.99的数值,其中999.99为该区间的上限。换言之,D代表小数点后的位数,而(M-D)则代表整数部分的位数。
数据存储方式中,[了解]类型的数据是以每9位十进制数作为一个单元,将其转换为4个字节进行保存。
官方说明指出,这些应用在采用一种技术,该技术能够将九个数据项压缩至4个字节的存储空间中。
那有可能设置的位数不是9的倍数,官方还给了如下表格对照:
of –213–425–637–94
表格什么意思呢,举个例子:
字段(18,9)中,18减去9等于9,因此整数和小数部分均为9,各自需占用4个字节;在字段(20,6)中,20减去6等于14,小数部分为6,对应表中的3个字节,而整数部分为14,14减去9等于5,即4个字节加上表中的3个字节。
所以通常我们在设置小数的时候,都是用的类型!!
小案例1
执行了删除名为temp2的表的命令;成功删除,无行受影响,耗时0.15秒;创建了新的temp2表,包含id、id2和id3三个字段,均为浮点型,小数点后两位;成功创建,无行受影响,耗时0.18秒;向temp2表中插入了两组数据,一组为(0.21, 0.21, 0.21),另一组为(0.21, 0.12, 0.12);插入操作成功,共插入2行数据,耗时0.06秒;查询temp2表中的数据,结果显示id、id2和id3字段的值分别为0.25、0.21、0.21和0.00、0.12、0.12;查询完成,共返回2行数据,耗时0.01秒;查询temp2表的结构,字段id、id2和id3的类型均为float(10,2),允许空值,无键,无额外信息;查询完成,共返回3行数据,耗时0.01秒。
小案例2
mysql> 删除了名为temp2的表; 查询完成,未影响任何行,耗时0.16秒。 mysql> 显示了temp2表的结构; 查询完成,未影响任何行,耗时0.09秒。 mysql> 将数据插入到temp2表中; 发生错误,错误代码1136,提示列的数量与值数量不匹配,位于第一行。 mysql> 重新插入数据到temp2表中; 查询完成,成功插入1行,耗时0.03秒。 mysql> 查询temp2表中的数据; 显示结果如下:+-------+-------+| id | id2 |+-------+-------+| 1.235 | 1.235 |+-------+-------+共1行数据。 mysql> 将另一组数据插入到temp2表中; 查询完成,成功插入1行,耗时0.09秒。 mysql> 再次查询temp2表中的数据; 显示结果如下:+-------+-------+| id | id2 |+-------+-------+| 1.235 | 1.235 || 3.300 | 4.400 |+-------+-------+共2行数据。 mysql> 计算id和id2的差值; 显示结果如下:+------------+| id-id2 |+------------+| 0.00000 || -1.10000 |+------------+共2行数据。 mysql> 修改temp2表中id字段的精度为10位,小数位为5位; 查询完成,成功修改2行,耗时0.28秒。 mysql> 修改temp2表中id2字段的精度为10位,小数位为5位; 查询完成,成功修改2行,耗时0.15秒。 mysql> 再次查询temp2表中的数据; 显示结果如下:+---------+---------+| id | id2 |+---------+---------+| 1.23500 | 1.23500 || 3.30000 | 4.40000 |+---------+---------+共2行数据。 mysql> 计算id和id2的差值; 显示结果如下:+----------+| id-id2 |+----------+| 0.00000 || -1.10000 |+----------+共2行数据。
扫一扫在手机端查看
-
Tags : Bilibili 哔哩哔哩 哔哩哔哩动画 哔哩哔哩弹幕网 弹幕视频 B站 弹幕 字幕 AMV MAD MTV ANIME 动漫 动漫音乐 游戏 游戏解说 二次元 游戏视频 ACG galgame 动画 番组 新番 初音 洛天依 vocaloid 日本动漫 国产动漫 手机游戏 网络游戏 电子竞技 ACG燃曲 ACG神曲 追新番 新番动漫 新番吐槽 巡音 镜音双子 千本樱 初音MIKU 舞蹈MMD MIKUMIKUDANCE 洛天依原创曲 洛天依翻唱曲 洛天依投食歌 洛天依MMD vocaloid家族 OST BGM 动漫歌曲 日本动漫音乐 宫崎骏动漫音乐 动漫音乐推荐 燃系mad 治愈系mad MAD MOVIE MAD高燃
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1