select str(3.55,4,1)
--3.5
select str(33.55,4,1)
--33.5select str(3.45,4,1)--3.5实在是搞晕了,为何前面两种不四舍五入,而后一个可以。

解决方案 »

  1.   

    str是将数值类型转为指定长度的字符串,四舍五入用round
      

  2.   


    SELECT STR(123.45, 6, 1)
    --123.5
    这个又怎么解释
      

  3.   

    诸位:我似乎已经知道原因。因为str的第一个参数为浮点类型(float)
    当为 3.55时 转化为浮点类型为 3.5499999999999998 保留一位小数 结果为3.5
    当为 3.45时 转化为浮点类型为 3.4500000000000002 保留一位小数 结果为3.5
      

  4.   

    --str (float型小数[,总长度[,小数点后保留的位数])
    select str(123.451)--返回   123(123前面有空格)
    select str(123.451,3)--返回123
    select str(123.451,7,3)--返回123.451
    select str(123.451,7,1)--返回123.5
    select str(123.451,5,3)--返回123.5
    select str(123.651,2)--返回** 返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**。
    --注意在截断时遵循四舍五入
    --总长度。它包括小数点、符号、数字以及空格。默认值为 10。
    --小数点后最多保留16位。默认不保留小数点后面的数字