mssql中浮点型和小数有什么区别?看了书还是觉得没啥多大区别,就是数据范围不同。还有
CREATE TABLE xs
(
decimal_number decimal(8,6),
numeric_number numeric(5,3)
)
GO
INSERT INTO xs
VALUES (99.99999777,40)
INSERT INTO xs
VALUES (99.9993999,99)
INSERT INTO xs
VALUES (99.99,99)
GO
SELECT * FROM xs
GO
如果小数点后是七个9.就插入不了
INSERT INTO xs
VALUES (99.9999999,99)
dec的是有这个规定的吧,若插入99.9999994
他就可以舍掉后面插入了谢谢了
CREATE TABLE xs
(
decimal_number decimal(8,6),
numeric_number numeric(5,3)
)
GO
INSERT INTO xs
VALUES (99.99999777,40)
INSERT INTO xs
VALUES (99.9993999,99)
INSERT INTO xs
VALUES (99.99,99)
GO
SELECT * FROM xs
GO
如果小数点后是七个9.就插入不了
INSERT INTO xs
VALUES (99.9999999,99)
dec的是有这个规定的吧,若插入99.9999994
他就可以舍掉后面插入了谢谢了
解决方案 »
- 面试题
- 这个算不算SQLServer2008express的一个小bug
- 有些配置页面是不是就一定使用的web服务器?
- 一个关于修改字段的脚本问题:
- 求一查询脚本,可能要用到正则
- 安装时的问题:在SQL Server 2000快安装完了时发生!!
- 100分求存储过程,向表中插入1亿条记录!!!!!!help me~~
- 求一个查询表中某字段和该字段相同值出现次数的sql语句
- 急救
- 请问,如何在自己的程序中检查SQL语句的语法?怎样将包含'"的动态字符串保存到数据库中?
- 一台服务器上SQL2005的备份还原到另一台服务器的SQL2005上,还原不了?
- 求SQL语句一条,一定范围的批量设置为一个值。
固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 ISO 同义词为 dec 和 dec(p, s)。numeric 在功能上等价于 decimal。p(精度)
最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从 1 到最大精度 38 之间的值。默认精度为 18。s (小数位数)
小数点右边可以存储的十进制数字的最大位数。小数位数必须是从 0 到 p 之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为 0;因此,0 <= s <= p。最大存储大小基于精度而变化。
float 和 real
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。语法
float [ ( n ) ]从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。n 所在范围 精度 存储大小
1-24 7 位数 4 字节
25-53 15 位数 8 字节
Microsoft® SQL Server™ float[(n)] 数据类型对于从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。real从 ?3.40E + 38 到 3.40E + 38 之间的浮点数字数据。存储大小为 4 字节。在 SQL Server 中,real 的同义词为 float(24)。
decimal(...),是精确数.一般用于生产生活方面.
小数数据
Decimal 数据包含存储在最小有效数上的数据。在 SQL Server中,小数数据使用 decimal 或 numeric 数据类型存储。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。例如,存储数值 19283.29383 比存储 1.1 需要更多的字节。在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。你的问题是定义了六位小数,所以小数后七个九是不能插入的.
INSERT INTO xs
VALUES (99.9999999,99)
进位以后就成9位了,所以插入失败
建議用REAL DECIMAL