2010-09-29 117 views
2

我有两个SQL查询都返回SQL查询结果问题

选择圆(转换(浮动, '24367.723'),2)

结果:24367.72

二:

select convert(varchar(20),round(convert(float,'24367.723'),2))

结果:24367.7

为什么第二次查询返回排除转换后的最后一位数字为varchar

由于提前

回答

3

如果不指定样式参数的转换功能你会得到默认的样式(0)。

即,它是等效于做

select convert(varchar(20),round(convert(float,'24367.723'),2), 0)  

default style for converting from float to varchar显示最大为6个数字。

0

使用浮点数时,STR()函数通常会根据MSDN给出更好的结果,因为您有更多的控制权。

E.g.

select str(convert(float,'24367.723'),8, 2) 
0

不要使用浮动,使用确切的数字。像这样的东西

convert(varchar(20), convert(numeric(20,2), '24367.72'))