将整数相除并用一个强制转换取整到小数点后三位?

时间:2018-10-26 22:32:41

标签: sql sql-server tsql sql-server-2008

是否有一种方法可以将两个整数相除并只进行一次转换就将其舍入到小数点后3位?

我看到的所有示例从convertdecimal,然后是round。有些人同时使用分子和分母,等等。我见过roundfloorceiling等。

我只想使用一个演员表就可以了。

例如,1/3 would be 0.3335/3 is 1.667

我正在这样做,将结果转换为varchar

1 个答案:

答案 0 :(得分:1)

将两个int值相除t-sql只有两个可能的结果:

  • 错误8134(除以零)
  • 再次提供int值

将其中一个操作数强制为numeric就足够了:

select round(1.0/3,3,0)

另一种方法是避免尾随零:

select cast(1.0/3 as decimal(18,3))

这当然仅适用于数字文字。如果您有列或参数值,则仍然需要cast

这种在编码高尔夫球上的微不足道的尝试可消除一个角色:

select convert(decimal(9,3),1.0/3)