declare @a float
set @a = 2.9999999
select cast(left(cast(cast(@a as numeric(20,10)) as varchar(20)),5) as numeric(10,3))
------------ 
2.999(所影响的行数为 1 行)

解决方案 »

  1.   

    declare @q float,@n varchar(1000)
    select @q=2.9999999
    select @n=convert(varchar(1000),convert(numeric(20,7),@q))
    select convert(numeric(20,3),left(@n,3+CHARINDEX('.',@n)))
      

  2.   

    declare @h float,
             @string char(50)set @h=2.99999999 set @string= substring(str(@h,10,8),1,5)
    print @string 
    -------------------------------
    2.999
      

  3.   

    STR
    由数字数据转换来的字符数据。语法
    STR ( float_expression [ , length [ , decimal ] ] ) 参数
    float_expression是带小数点的近似数字 (float) 数据类型的表达式。不要在 STR 函数中将函数或子查询用作 float_expression。 length是总长度,包括小数点、符号、数字或空格。默认值为 10。decimal是小数点右边的位数。