我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

极客小俊

一个专注于web技术的80后

无需与智者争锋,只需超越那些懈怠者,你便能轻松胜过绝大多数人!

浮点数精度比较_float与double区别_mysql的decimal

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行数据。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/9420.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线