0
declare @alpha float
declare @tmp int

set @tmp = 6
set @alpha = 1/@tmp

select @alpha 
        >> Here @alpha is echoed as 0

declare @tmp1 float

set @tmp1 = 6
set @alpha = 1/@tmp1

select @alpha 
      >> Here @alpha is echoed as 0.1666666

如果它至少发出警告但编译器也没有发出任何警告,我会很好。或者是否有用于此类转换操作的编译器设置以自​​动将其转换为所需的转换。

我的意思是将 int 转换为 float 并不难,反之亦然是我的理由。另一个合乎逻辑的问题是,如果它不允许将日期变量转换为varchar变量,为什么它应该允许intfloat最终给出不希望的结果。

4

1 回答 1

0

也许这个链接会很有用,也许你应该在除法之后使用 cast 或 convert 函数,或者在它的一些运算符中使用浮点值(取决于你需要做什么),因为:

返回具有较高优先级的参数的数据类型。有关详细信息,请参阅数据类型优先级 (Transact-SQL)。如果整数被除数除以整数除数,则结果是一个整数,结果的任何小数部分都被截断

这里有一些例子。

于 2013-07-14T18:57:17.077 回答