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
他就可以舍掉后面插入了谢谢了

解决方案 »

  1.   

    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 (小数位数)
    小数点右边可以存储的十进制数字的最大位数。小数位数必须是从 0 到 p 之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为 0;因此,0 <= s <= p。最大存储大小基于精度而变化。
      

  2.   

    浮点型:不是精确数,是近似数.一般用于科学研究等方面.
    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 数据类型。你的问题是定义了六位小数,所以小数后七个九是不能插入的.
      

  3.   

    因为你的定义的decimal为8位的,
    INSERT INTO xs 
    VALUES (99.9999999,99) 
    进位以后就成9位了,所以插入失败
      

  4.   

    FLOAT 近似數不準
    建議用REAL DECIMAL