SQL中的real、float、decimal、numeric数据类型区别_numeric sql_cnmeimei的博客-程序员宅基地

技术标签: 技术  

概述:

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

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

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

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

 

1、区别说明

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位。

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

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

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

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

说明:

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

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

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

 

创建的表:

 

实例1:

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

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

 

实例2:

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

 

实例3:

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

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

 

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

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45534118/article/details/110203378

智能推荐

JavaScript动态加载script方式引用百度地图API 拓展---JavaScript的Promise-程序员宅基地

上一篇博客JavaScript动态加载script方式引用百度地图API,Uncaught ReferenceError: BMap is not defined这篇文章中我接触到一个新的单词:Promise,借此来记录一下它,引用来源:JS - Promise使用详解--摘抄笔记 因为现在还不会jquery,就只看了原生js部分的内容。一、promises相关概念promises...

Arcgis地图服务切片_service edittor切片_GIS从业者的博客-程序员宅基地

1、准备好数据需要在地图上展示的数据图层都打开2、发布前提是连接了服务器下面主要设置有两处第一个是为了加快速度第二个是切片级别设置设置完之后不要忘了分析确认没有错误之后,可以发布了3、结果登录arcgis服务后台查看结果..._service edittor切片

关于pycharm找不到已经安装的module ImportError: No module named问题的解决方案-程序员宅基地

最近在整理Python和Pycharm相关配置的时候,遇到了一些配置上的问题,这里给大家做一下分享整理。首先,自己安装了一个python3.6(在官网上安装的,当前最新版本是Python 3.7),下载地址如下:https://www.python.org/downloads/windows/然后按照安装向导,一点点安装即可。安装目录选择为:C:\Users\yanyan\AppData\Loca...

XMind安装时直接安装到C盘_xmind为什么会直接安装在c盘-程序员宅基地

XMind安装时会直接安装到C盘里描述情况: 在一些软件安装的时候不回去询问你要安装的路径而是自行安装不给你选择的机会!对于此类软件表示很无奈。解决办法:这里以‘XMind’为案例1、打开你的Windows运行(win + r),输入regedit打开注册表编辑器2、根据路径找到我们要找的文件ProgramFilesDir(如图)路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion(可直接复制)3、右键点击P_xmind为什么会直接安装在c盘

数据库的历史发展_数据库的发展历史哦-程序员宅基地

一、数据库技术的历史和发展 数据库技术是本世纪60年代开始兴起的一门信息管理自动化的新兴学科,是计算机科学中的一个重要分支。随着计算机应用的不断发展,在计算机应用领域中,数据处理越来越占主导地位,数据库技术的应用也越来越广泛。数据库是数据管理的产物。数据管理是数据库的核心任务,内容包括对数据的分类、组织、编码、储存、检索和维护。随着计算机硬件和软件的发展,数据库技术也不断..._数据库的发展历史哦

企业运维容器之 docker 数据卷_docker snapshots 能否删除_123坤的博客-程序员宅基地

企业运维容器之 docker 数据卷 1. Docker 数据卷管理2. 卷插件简介3. convoy卷插件4. 总结1. Docker 数据卷管理为什么要用数据卷docker 分层文件系统:性能差、生命周期与容器相同docker 数据卷:mount到主机中,绕开分层文件系统;和主机磁盘性能相同,容器删除后依然保留;仅限本地磁盘,不能随容器迁移docker 提供了两种卷:bind mountdocker managed volumebind mount是将主机上的目录或文件 moun_docker snapshots 能否删除

随便推点

npm和bower的关系和区别_bower 和npm-程序员宅基地

前言我们在开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。 于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到一个包管理器上,如果要使用,直接通过包管理器安装就可以直接用,不用管代码存在哪,应该从哪下载。因此使用包管理器主要基于以下几个原因:方便的寻找和下载你需要的依赖库..._bower 和npm

webpack中引入ammo.js报错-程序员宅基地

  最近使用webpack搭建three.js项目环境遇到问题:引入ammo.js之后,出现报错信息,如下:./src/libs/ammo.jsModule not found: Error: Can’t resolve ‘fs’ in ‘/Users/maxlz/Desktop/StudyData/threejs/threejs_demo/src/libs’  查看ammo.js源码之...

【Android病毒分析报告】 - 新病毒FakeUmg “假面友盟”-程序员宅基地

近期百度安全实验室发现一款“假面友盟”新病毒,该病毒通过大批量二次打包第三方应用获得快速的传播。安全实验室监控数据表明,受该病毒感染的应用数以万计,且分布于国内不同流行应用商店,累计下载量超过10万余次。该病毒恶意代码伪装成著名的“友盟统计”插件,具有较强的隐蔽性,导致该病毒较难被发现。该病毒启动后,后台偷偷访问远端服务器获取吸费指令,并根据服务器端指令执行如下恶意行为:

Jetson TX2 下安装pillow 报ImportError: The _imagingft C module is not installed方案_jetson 安装pillow-程序员宅基地

Jetson TX2上的Ubuntu18.04 系统,使用pip安装pillow,运行时出现ImportError错误“The _imagingft C module is not installed”具体出错的那行代码是font = ImageFont.truetype()解决过程如下:先确保代码中导入语句是:from PIL import ImageFont尝试先卸载pil..._jetson 安装pillow

解决:jssip中接通后 PC没有声音但是话机有声音_jssip 接听对方没声音_Mainづ鑫的博客-程序员宅基地

由于jssip各类解决文章太少的 赶紧记下来....audioEle.srcObject=session.connection.getRemoteStreams()[0];audioEle就是页面中audio的h5元素。解决后才知道原来是audio中没有赋予音频流。Mark Mark Mark !!!参考链接:JsSIP 注册,拨打填坑 - _Ong - 博客园比较不错的笔记:JsSIP踩坑笔记 - 掘金..._jssip 接听对方没声音