SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」概述: 浮点数据类型包括real型、float型、decimal型和numeric型。浮点数据类型用于存储十进制小数。 在SQL Server 中浮点数值的数据采用上舍入(Round up)的方式进行

SQL中的real、float、decimal、numeric数据类型区别

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

概述:

浮点数据类型包括real型、float型、decimal型和numeric型。浮点数据类型用于存储十进制小数。

在SQL Server 中浮点数值的数据采用上舍入(Round up)的方式进行存储,所谓上舍入也就是,要舍入的小数部分不论其大小,

只要是一个非零的数,就要在该数字的最低有效位上加1,并进行必要的进位。

由于浮点数据为近似值,所以并非数据类型范围内的所有数据都能精确地表示。

 

1、区别说明

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

decimal(numeric):同义,用于精确存储数值

float 和 real:不能精确存储数值

 

2、real数据类型

real型数据的存储大小为4个字节,可精确到小数点后第7位数字。

这种数据类型的数据存储范围为从-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。

在MSSQL中real的同义词是float,用法几乎一样。

 

3、float数据类型

float型的数据存储大小为8个字节,可精确到小数点后第15位数字。

这种数据类型的数据存储范围为从-1.79E+308~-2.23E-308,0和2.23E+308~1.79E+308。

FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

float型的数据可写成float[(n)]的形式。其中n是1~15之间的整数值,指定float型数据的精度。当n为1~7时,实际上用户定义了一个real型的数据,系统用4个字节存储;

当n为8~15时,系统认为它是个float型的数据,用8个字节存储它。这样既增强了数据定义的灵活性,又节省了空间。

 

4、decimal(numeric)数据类型

decimal数据类型和numeric数据类型的功能完全一样,它们都可以提供小数所需要的实际存储空间,

但也有一定的限制,用户可以用2~17个字节来存储数据,取值范围是-1038+1~1038-1。

DECIMAL(size,d) 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在括号中规定最大位数。

其中size表示可供存储的值的总位数(不包括小数点),默认值为18;d表示小数点后的位数,默认值为0;

参数之间的关系是0≤d≤size。例如:decimal(15,5)表示共有15位数,其中整数10位,小数5位。

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

若一个数是上舍入数,其绝对值不会减少。如:对3.14159265358979 分别进行2 位和12位舍入,结果为3.15 和3.141592653590。

在精度上还是有很大的差别的,所以在创建数据库时一定要对字段的数据类型进行精准的分析,确保在插入数据值的最大精度上不要出现差错这样才不会使数据在运算的过程中出现大的偏差。

例如在月底或者年底汇总报表时查询出的数据是小数,在运算完以后的数据也是小数,可是在增加到汇总表里的时候变成整数了,

这种情况往往就是数据库中表在建立的时候没有有效的设置浮点型数据的小数点后面精度的问题使其数据发生了上舍入现象。

说明:

舍入是一种修约规则。在日常的生活中,我们为了精简格式,记忆方便,常常用四舍五入的方法来去掉零头或凑个整数来解决此问题。

四舍五入是一种非常灵活的方法。因此不管是在日常生活中还是在数学计算中四舍五入方法应用的都比较广泛。

除了四舍五入的舍入方法外还有其他不同的舍入规则、在数学中也有其独特的定义。

 

创建的表:

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

 

实例1:

这边我创建了个表用的real,float,decimal,我创建的字段类型是DECIMAL(3,1),长度是3,小数为1

查询出来的数据,遵循四舍五入,这里我插入了88.04,所以查询出来是88.0

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

 

实例2:

这边我对decimal的字段插入88.05,查询出来的数据是88.1

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

 

实例3:

这边测试一下超过长度会怎样,小数位在表中是保留1位,所以无论你输入多少位,都是保留1位,也不会报错,但是超出长度就会报错

将 varchar 转换为数据类型 numeric 时出现算术溢出错误。

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

 

按照上面实例插入了两条数据,可得知结果:

SQL中的real、float、decimal、numeric数据类型区别「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10263.html

(0)
上一篇 2022-12-30 17:00
下一篇 2023-01-22 14:18

相关推荐

  • Python工程师的代码回退实践

    Python工程师的代码回退实践在软件开发过程中,代码管理是一个非常重要的任务,它确保代码的质量和可维护性。然而,开发过程中常会遇到意想不到的问题,比如某次提交的代码出现了错误或者导致了系统崩溃。这时我们就需要回退到之前的版本,从而修复错误。本文将介绍如何在Python项目中进行代码回退实践,以帮助Python工程师从这些问题中快速恢复并修复错误。

    2024-07-28
    35
  • conda与anaconda有什么不同?

    conda与anaconda有什么不同?conda和anaconda都是Python的包管理器,用于管理Python包以及其依赖项。conda是包含在anaconda中的一个软件包和环境管理器,可以下载任何语言的软件包。anaconda是一个Python的开发环境,其中包含了许多有用的库和工具,便于开发人员在Python上进行科学数据分析,人工智能(AI),深度学习和机器学习等领域的开发。

    2024-04-26
    71
  • 其他垃圾有哪些_Mysql是什么

    其他垃圾有哪些_Mysql是什么视图 使用环境: 将多表联查的结果放到一张虚拟表中,实际上只会生成一个表结构的frm文件,不会生成数据文件,他的数据完全来源于后面多表的内容.他会方便你查询数据(优化sql)而不是增删改数据. 注意:

    2023-02-22
    146
  • MySQL数据类型 – 数据类型默认值

    MySQL数据类型 – 数据类型默认值数据类型默认值数据类型规范可以有显式或隐式的默认值。数据类型规范中的DEFAULT值子句显式指示列的默认值。示例:SERIALDEFAULTVALUE是一种特殊情况。在整数列的定义中,它是NOTNU…

    2023-04-06
    141
  • Python列表删除元素操作

    Python列表删除元素操作在Python中,可以通过索引的方式来删除List中的元素。使用del语句,删除List中的指定元素。具体方式如下:

    2024-03-11
    95
  • [MySQL] 查看explain中的key_len判断究竟使用了哪个索引

    [MySQL] 查看explain中的key_len判断究竟使用了哪个索引在一张表里有多个索引 , 我们where字段里条件有多个索引的值 , 那么究竟使用的哪个呢? 我们可以使用explain来查看 , 其中的key_len字段可以看得出来 比如下面这条sql expla

    2023-02-09
    156
  • sql数据字典生成工具_数据库转换为数据字典

    sql数据字典生成工具_数据库转换为数据字典一、引言 过往的工作中,接触过一些不同的ERP系统。一个系统的数据字典,对于系统推行、运维、二次开发、深度定制,起到非常重要的桥梁作用。因此,记录一下各个系统生成数据字典的SQL语句,以便于快速查询。

    2023-05-16
    158
  • oracle创建文件夹_oracle数据导出expdp

    oracle创建文件夹_oracle数据导出expdp1.创建目录(需要在服务器上创建对应的目录) create or replace directory testdir as '/u01/software/test'; 2.给用户授权(

    2023-04-15
    159

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注