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
变量,为什么它允许int
到float
并最终给出不希望的结果。
答案 0 :(得分:0)
也许这个link会很有用,也许你应该在divison之后使用强制转换或转换函数,或者在某些运算符中使用float值(取决于你需要做什么),因为:
返回具有更高优先级的参数的数据类型。有关更多信息,请参阅Data Type Precedence (Transact-SQL)。 如果整数被除数除以整数除数,则结果是一个整数,其截断结果的任何小数部分
Here一些例子。