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
我需要除以 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