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

RAK*_*KAR 0 sql-server sql-server-2005 sql-server-2008

SELECT CAST (330/60 AS FLOAT) AS result
Run Code Online (Sandbox Code Playgroud)

要么

SELECT CONVERT(FLOAT, 330/60) AS result
Run Code Online (Sandbox Code Playgroud)

其实我期待5.5的结果

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

并告诉我任何解决方案,以获得5.5的结果

jue*_*n d 5

使用60.0强制定点类型:

 SELECT CAST (330/60.0 AS FLOAT) AS result
 SELECT CONVERT(FLOAT, 330/60.0) AS result
Run Code Online (Sandbox Code Playgroud)

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

SELECT 330/60.0 AS result
Run Code Online (Sandbox Code Playgroud)