SQL 服务器中的整数除法四舍五入到小数点后两位

Integer division round off to 2 decimal places in SQL Server

我需要除以 2 个整数,结果应四舍五入到小数点后两位。 实际数字如下所示:

Select 3/5

要实现四舍五入到小数点后两位,将分子乘以浮点数:

select round(3.0 / 5 , 2)

尝试将这两个数字转换为十进制数字,如下所示:

select round ( CAST (3 as decimal(3,2)) /  CAST (5 as decimal(3,2)) , 2)

但结果包含多于2位小数。

预期结果是:

0.60

我怎样才能做到这一点?

当我们除法时,我们可以使用一个整数,这将产生一个整数结果,或者一个小数,通过添加一个小数点(有或没有零),这将给出一个小数结果,小数位数由格式,或通过添加 e 的浮点数,这将使用不带尾随零的有效小数位数。以下测试模式演示了它们之间的区别。

我认为 ROUND(2e/3,2) 是到达小数点后 2 位的最简洁的方法。

SELECT 
  3e/5 FloatingPoint,
  3./5 DecimalDivision,
  CONVERT(DECIMAL(3,2), 3./5) DecimalDivision,
  Round(3e/5,2) RoundedFloat
FloatingPoint | DecimalDivision | DecimalDivision | RoundedFloat
------------: | --------------: | --------------: | -----------:
          0.6 |        0.600000 |            0.60 |          0.6
SELECT 
  2e/3 FloatingPoint,
  2./3 DecimalDivision,
  CONVERT(DECIMAL(3,2), 2./3) DecimalDivision,
  Round(2e/3,2) RoundedFloat
    FloatingPoint | DecimalDivision | DecimalDivision | RoundedFloat
----------------: | --------------: | --------------: | -----------:
0.666666666666667 |        0.666666 |            0.67 |         0.67

db<>fiddle here