为什么SQL Server会舍弃除以两个整数的结果?

Jos*_*ons 22 sql-server templates rounding

我有一个带有smallint列的表,其中包含百分比作为整数(即​​50,75,85等)

当我将此列除以100时,如

SELECT MY_COLUMN/100 AS PCT_AS_FRACTION
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)

结果四舍五入到最接近的整数.例如,对于包含数字"50"的行,我的结果为零.

我可以用一个简单的声明复制它:

SELECT 50 / 100 AS TEST_VALUE
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我怎样才能在结果中获得更高的精确度?

Sni*_*gus 32

当你进行整数除法(整数除以整数)时,你总是得到一个整数答案.50/100 = .50,整数表示为0.

你试过将MY_COLUMN除以100.0吗?

  • 除以100.0的作品.简单解释一个简单的问题.谢谢 :) (2认同)

boj*_*boj 24

投整整数.

SELECT (cast(50 AS float)/100)
Run Code Online (Sandbox Code Playgroud)