SQLServer,除法返回零,怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

下面是我在示例中使用的代码:

 PRINT @set1
 PRINT @set2

 SET @weight= @set1 / @set2;
 PRINT @weight

结果如下:

47
638
0

我想知道它为什么会回来0而不是0,073667712

提问于
用户回答回答于

要么将set 1和set 2声明为浮点数,而不是整数,要么将它们作为计算的一部分转换为浮点数:

SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
用户回答回答于

在除法中只使用整数时,将得到整数除法。当您使用(至少一个)双或浮动时,您将得到浮点除法;

所以你可以

  1. 将其中一个或两个变量声明为浮动/双变量
  2. 将其中一个或两个变量强制转换为浮动/加倍。

不要仅仅将整数除法的结果转换为Double:除法已经作为整数除法执行,所以十进制后面的数字已经丢失了。

扫码关注云+社区