繁体   English   中英

sql服务器回合

[英]sql server round

select round((cast(56/3 AS DECIMAL (4,2))),1)

显示的是18个输出而不是19个,实际值为18.66。 我的回合功能不起作用,请帮忙。

问题是56/3整数计算,这意味着没有浮点数。

您需要在初始计算中使用浮点数,例如56.0/3 另外,如果要舍入到19,则需要舍入到最接近的整数ROUND(x, 1)将舍入到小数点后第一位-您需要传递0以舍入到19。

SELECT ROUND((CAST(56.0/3 AS DECIMAL (4,2))),0)

或者,您可以将ROUND切换为CEILING

select CEILING(CAST(56.0/3 AS DECIMAL(4,2)))

您的代码部分:

CAST( 56/3 AS DECIMAL )

首先评估返回值为18的56/3 。然后将其转换为十进制,得出18.0。

您需要在除法发生之前强制转换分子或分母。

round功能运行良好-只是不使用您认为正确的输入。

除以数字之前,请转换整数值之一:

select round(56/convert(DECIMAL (4,2),3),0);

如果不这样做,则将整数相除,结果为18而不是18.66

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM