我的数据表中有一个字段是FLOAT型的,但是我只想在前台界面上显示小数点后2位,用convert(numeric(10,2),num)后虽然可以实现大部分,但是如果num是0.##的话就结果就不太理想,比如num=0.123456 convert(numeric(10.2),num)后结果就是.12 小数点前边的0会丢失,大家帮我想想办法吧,谢谢~

解决方案 »

  1.   

    不用 convert select cast(0.32456 as numeric(18, 2))
      

  2.   

    declare @num floatset @num=0.123456select ltrim(convert(decimal(10,2),@num)) /*
    -----------------------------------------
    0.12(1 row(s) affected)
    */
      

  3.   

    DECLARE @a float
    SET @a=0.095480
    SELECT ltrim(str(@a,10,2))
    --result
    /*---------- 
    0.10(所影响的行数为 1 行)
    */
      

  4.   

    LTRIM
    删除起始空格后返回字符表达式。sql帮助上的!不太明白为什么会出现0.12的结果!
      

  5.   


    declare @a decimal(10,2)
    declare @b varchar(10)select @a = convert(decimal(10,2),0.215)
    select @b = @a
    select @b,@a因为是字符,decimal类型会省略小数前的0
      

  6.   

    小数的处理--解决的问题
    --小数中0的处理
    --四舍五入的处理
    --分母为0 的处理
    --结果为小数的处理
    cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50))
    --例
    DECLARE @a float
    SET @a=0.123456
    select cast(round(cast(@a as float),2) as varchar(50))
      

  7.   


    --解决的问题
    --小数中0的处理
    --四舍五入的处理
    --分母为0 的处理
    --结果为小数的处理
    --charry
    cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50))
    --例
    DECLARE @a float
    SET @a=0.123456
    select cast(round(cast(@a as float),2) as varchar(50))
      

  8.   

    LTRIM把数值隐式转换成字符了,