在SQL Server中的CAST或CONVERT上出现意外结果

时间:2012-06-21 08:17:45

标签: sql-server sql-server-2008 sql-server-2005

SELECT CAST (330/60 AS FLOAT) AS result

SELECT CONVERT(FLOAT, 330/60) AS result

实际上我期待结果为5.5

但它正在返回5. 为什么?

并告诉我任何解决方案,以结果为5.5

2 个答案:

答案 0 :(得分:5)

使用60.0强制定点类型:

 SELECT CAST (330/60.0 AS FLOAT) AS result
 SELECT CONVERT(FLOAT, 330/60.0) AS result

330/60的计算是以整数形式完成的,它将对结果进行舍入。之后你就投了漂浮。您可以直接使用数字类型,也不需要强制转换:

SELECT 330/60.0 AS result

答案 1 :(得分:2)

您应该尝试将分母转换为浮动然后进行除法,而不是将答案转换为浮点数

 Select 330/CAST(60 as float) as result

或者更改分母以包含juergen d

建议的小数部分
 SELECT CAST (330/60.0 AS FLOAT) AS result