① sqlServer中decimal,float 和 real 数据类型的区别
主要是
1
可表示数字大小及精度问题
2
存储字节问题
float
-1.79e
+
308
至
-2.23e
-
308、0
以及
2.23e
-
308
至
1.79e
+
308
取决于
n
的值
real
-3.40e
+
38
至
-1.18e
-
38、0
以及
1.18e
-
38
至
3.40e
+
38
4
字节
decimal[
(p[
,
s]
)]
p(精度),s
(小数位数)
固定精度和小数位数。使用最大精度时,有效值从
-
10^38
+1
到
10^38
-
1。
精度
1
-
9
存储字节数
5
精度
10
-
19
存储字节数
9
精度
20
-
28
存储字节数
13
精度
29
-
38
存储字节数
17
② SQL中 数据类型(14,2) 包含小数点么
14是精度,2是小数位数
numeric[(p[, s])]
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。
请注意!小数据位数可以不添,这样就是默认为整数了。
③ SqlServer中decimal,float 和 real 数据类型的区别
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。
定义 decimal 的列、变量和参数的两种特性如下:
• p 小数点左边和右边数字之和,不包括小数点。如 123.45,则 p=5,s=2。
指定精度或对象能够控制的数字个数。
• s
指定可放到小数点右边的小数位数或数字个数。
p 和 s 必须遵守以下规则:0 <= s <= p <= 38。
numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal 数据类型在功能上等效。
当数据值一定要按照指定精确存储时,可以用带有小数的 decimal 数据类型来存储数字。
float 和 real 数据
float 和 real 数据类型被称为近似的数据类型。在近似数字数据类型方面,float 和 real 数据的使用遵循 IEEE 754 标准。
近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于 float 和 real 数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用 integer、decimal、money 或 smallmone 数据类型。
在 WHERE 子句搜索条件中(特别是 = 和 <> 运算符),应避免使用 float 或 real 列。最好限制使用 float 和 real 列做 > 或 < 的比较。
IEEE 754 规格提供了四种舍入模式:舍入到最接近的值、上舍入、下舍入和舍入到零。Microsoft® SQL Server™ 使用上舍入。所有的数值必须精确到确定的精度,但会产生细小的浮点值变化。因为浮点数字的二进制表示法可以采用很多合法舍入规则中的任意一条,因此我们不可能可靠地量化一个浮点值。
转换 decimal 和 numeric 数据
对于 decimal 和 numeric 数据类型,Microsoft® SQL Server™ 将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) 和 decimal(5,0) 被当作不同的数据类型。(因此在编存储过程当中使用的变量采用Real 或 Float,而不采用decimal类型)
在 Transact-SQL 语句中,带有小数点的常量自动转换为 numeric 数据值,且必然使用最小的精度和小数位数。例如,常量 12.345 被转换为 numeric 值,其精度为 5,小数位为 3。
从 decimal 或 numeric 向 float 或 real 转换会导致精度损失。从 int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric 转换会导致溢出。
默认情况下,在将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。
Float 的科学计数法与值的问题,问题的根源在于 float 类型本身是一种不精确的数据表示方法, 也就是说, 你放一个数据进去, 拿出来的时候可能会存在一点点点误差, 而这点点点误差在做数据比较的时候就会导致数据不一致.
④ SQL语句中要同时定义长度,精度,小数位数,怎样定义啊,举个例子教我下谢啦
decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。
numeric用法好像一样。
⑤ sql 数据库存储小数问题 我用numeric 设置了小数精度是4位 但是存储小数0.5时候进入数据是.5 求解决方法
.5 那是转换问题,值是一样的。
显示的时候SQL数据库自动转成字符型了,而默认转换是会省略掉前面的0的
⑥ sql的问题
你用的是sql2005吧
出现了
红色的叹号
红色的叹号为你修改的记录给你一个提醒
直接关闭这个窗口就保存了你修改的数据了
sql2005
在修改数据的时候不能点击红色叹号运行
你点击
X
关闭
这个表的数据就保存了
那你按
esc
不行吗
不行就强制关闭sql
⑦ SQL中numeric(22,5)为什么占13个字节,numeric(8,3)占5个字节
decimal[(p[,s])] 和numeric[(p[,s])]
固定精度和小数位数。使用最大精度时,有效值的范围为 - 10^38 +1 到 10^38 - 1。decimal的 ISO 同义词为dec和dec(p、s)。numeric在功能上等价于decimal。
p(精度)
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。
s(小数位数)
小数点右边可以存储的十进制数字的位数。从p中减去此数字可确定小数点左边的最大位数。小数点右边可以存储的十进制数字的最大位数。小数位数必须是从 0 到p之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为 0;因此,0 <=s<=p。最大存储大小基于精度而变化。
如上表中:精度P=22时,numeric(22,5)是13字节。
精度P=8 时,numeric(8,3)是5字节。
一定要给分啊,亲!~~
⑧ sql 数据库中 长度和精度指的是什么
数据类型的长度是存储数据所占用的字节数,指的是物理存储空间大小。
精度是指最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。
⑨ sqlsever在已建的表中对属性怎么进行精度限制
moneydecimal(18,2)。
1、定点精度,小数点左边和右边可以存储的十进制数字的最大个数,最大精度为38。
2、表示小数位数,小数点右边可以存储的十进制数字的最大个数,小数位必须是0~18之间,SQLServer 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98 的膝上型电脑到运行MicrosoftWindows2012 的大型多处理器的服务器等多种平台使用。