首页 > 编程知识 正文

mysql和oracle的区别,定点数是什么意思

时间:2023-05-05 05:56:37 阅读:151088 作者:2131

固定点数型

用浮点数表示小数有时不准确,有时正是因为必须保证小数的正确性,设计MySQL的大叔们才提出了一种叫做固定点数的数据类型。 这也是存储小数的方法之一:

其中:

m表示小数所需的十进制有效数字的个数。

请注意有效数字的个数。 例如,对于小数**-2.3,有效数字的个数为2;对于小数0.9,有效数字的个数为1**。

d表示该小数小数点以下十进制数字的个数。

这个很容易理解。 小数点以下有几个十进制数字。 D的值是什么?

举个例子,设定了m和d的单精度浮点数的取值范围的变化:

如果d相同,则表明m越大,该类型的取值范围越大; 在m相同的情况下,d越大,该类型可取值的范围越小。 当然,m和d的取值也不是无限大的,m的取值范围必须在1~255,d的取值范围必须在0~30,并且d的值必须在m以下。 m和d是可选的。 如果省略,则根据计算机支持的最大值存储值。

定点数是精确的小数,为了达到精确的目的,不能先转换成二进制小数再记忆。 (二进制小数表示形式的数值不准确,因为许多十进制小数都必须在转换为二进制小数后进行舍入操作。 实际上,所谓小数,只是把两个十进制整数用小数点分割,记住小数点左右的两个十进制整数就不准确了吗? 例如,对于十进制小数2.38,如果这个小数的小数点后两个整数,也就是2和38可以分别保存,不是就保存了正确的小数吗? 这个波浪的操作是6吗?

当然,事情没那么简单。 对于给定m,d值的**DECIMAL(M ),d )类型,如DEM cimal (16,4 ) * :

首先,确保小数点左侧整数中必须存储的十进制位数最多为12位,小数点右侧整数中必须存储的十进制位数为4位,如图所示。

从小数点的位置开始,按整数按9个10进制分为1组。 效果如下。

从图中可以看出,即使不足9个十进制位也可以分为组。

对于每组十进制数,将其转换为二进制数并保存。 所需的存储空间大小取决于组中包含的十进制位数。 具体请参照下表。

因此,decimal (16,4 )总共需要占用8个字节的存储空间大小,这8个字节由三部分组成:

第一组包含三个十进制位,需要双字节存储。

组2包含9个十进制位,需要4字节的存储。

组3包含四个十进制位,需要2字节的存储。

将转换完成的位串的最高有效位设置为1。

这些步骤有时会抛弃无知吧。 请不要着急。 举个例子就清楚了。 例如,如果使用定点decimal (16,4 )存储十进制小数1234567890.1234,则小数将分为三个部分。

1 234567890 1234

也就是说:

第一组包含整数1。

第二组包括整数234567890。

第三组包括整数1234。

然后将每个组的十进制数转换为相应的二进制数。

第一组占用两个字节,与整数1相对应的二进制数如下: (字节之间实际上没有空间,但为了便于理解添加了空间。 )

00000000 00000001

二进制看起来很辣,所以试着转换成对应的十六进制:

0x0001

组2占用4个字节,与整数234567890对应的十六进制数字如下:

0x0DFB38D2

第三组占用两个字节,与整数1234相对应的十六进制数字如下:

0x04D2

将这些十六进制数连接起来如下。

0x00010DFB38D204D2

最后,将结果的最高有效位设置为1。 因此,使用固定点数类型** decimal (16,4 ) * *存储时,最终的十进制小数1234567890.1234总共占用8个字节。 具体内容如下。

0x80010DFB38D204D2

一些朋友询问,如果希望使用固定点数类型decimal (16,4 )保存负数,是否可以对0x80010DFB38D204D2的每一位执行反向操作,例如-1234567890.1234 也就是说,得到以下结果。

0x7FFEF204C72DFB2D

根据以上内容可知,在DECIMAL(M,d )类型中,根据给定的m和d的值不同,所需的存储器空间的大小也不同。 与浮点数相比,浮点数需要更多空间来存储数据,因此,如果不是需要存储精确小数的场景,一般小数用浮点数表示就足够了。

在常数型decimal(m,d )中,m和d都是可选的,缺省m值为10,缺省d值为0。 也就是说,以下等式成立。

decimal=decimal(10 )=decimal (10,0 ) ) ) )。

ecimal(n )=decimal(n,0 ) ) ) ) ) ) )。

另外,m的范围为1~65,d的范围为0~30,且d的值不能超过m。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。