这是我在示例中使用的代码:
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2;
PRINT @weight
Run Code Online (Sandbox Code Playgroud)
结果如下:
47
638
0
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它会返回0而不是0,073667712
Mar*_*tin 137
要么将set1和set2声明为浮点数而不是整数,要么将它们作为计算的一部分转换为浮点数:
SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
Run Code Online (Sandbox Code Playgroud)
Han*_*ing 20
当你只使用一个除法中的整数时,你会得到整数除法.当您使用(至少一个)double或float时,您将获得浮点除法(以及您想要获得的答案).
所以你可以
不要只将整数除法的结果转换为double:除法已经作为整数除法执行,因此小数后面的数字已经丢失.
简单地将除法的底部略微增加1.0(或者你想要的小数位数)
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2 *1.00000;
PRINT @weight
Run Code Online (Sandbox Code Playgroud)