SQL server中的公式正在舍入以创建错误的结果

SQL server中的公式正在舍入以创建错误的结果,sql,sql-server,rounding,Sql,Sql Server,Rounding,我在SQL server中有以下公式: ((FP.Month1/30) * (30 - DAY(GETDATE()))) + FP.month2 + ((FP.month3/30) * (Day(GETDATE()))) 我一直在测试结果,结果显示有点错误。所以我把它分解成最小的数量,这个: (FP.Month1/30) 当我运行它的时候,结果是错误的,但它出错的原因是忽略了小数。Month1是140,所以如果你除以30,它应该是4.666667,但是它是4。因此,这当然会导致总公式产生错

我在SQL server中有以下公式:

((FP.Month1/30) * (30 - DAY(GETDATE()))) + FP.month2 + ((FP.month3/30) * (Day(GETDATE()))) 
我一直在测试结果,结果显示有点错误。所以我把它分解成最小的数量,这个:

(FP.Month1/30)
当我运行它的时候,结果是错误的,但它出错的原因是忽略了小数。Month1是140,所以如果你除以30,它应该是4.666667,但是它是4。因此,这当然会导致总公式产生错误的结果。如何确保SQL server也使用小数


仅供参考,我不知道这是否会影响它,但最终结果需要四舍五入到整数。

SQL server进行整数除法。因此,使用
30.0
,而不是30:

(FP.Month1 / 30.0)

值得注意的是,30.4是一个月天数的更好估计值。

SQL server进行整数除法。因此,使用
30.0
,而不是30:

(FP.Month1 / 30.0)
值得注意的是,30.4是对一个月天数的更好估计