create table test(A float(2))
------------------------------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)。

解决方案 »

  1.   

    float保存的是非精确数据,自然不一定和输入的相同,改用decimal/numeric吧
      

  2.   

    declare @f float(8)
    set @f='6.23'
    select @f
      

  3.   

    這是因為 Float 使用的是 CPU 的浮點計算芯片進行算的原因,浮點運算因其位數過長,所以計算出來的值永遠是一個近似值 ,所以不要期盼 Float 類型或 real / double 之類的數據   1.01 * 100=101
    1.01 * 100 可能會等於 100.99999999998 也可能等於 101.0000000011如果你要用準確的結果數值,那以就要用 decimal 或 integer 之類的非浮點運算數值。
    但是用 numeric 和 decimal 類型的數值時,請注意,數據庫一般都以文本方式保存這個值,所以
    你絕對不能 rs("decimal字段")<>1 的方式來進行數據比較,因為 rs("decimal字段") 是文本類型,
    與數值型在進行比較時,肯定會報"類型不匹配" 的錯誤。