不足0.5进到0.5,大于0.5,进到1,如何实现?(23.345-->23.5, 23.558-->24)
不足0.5进到0.5,大于0.5,进到1,如何实现?(23.345-->23.5, 23.558-->24)
比如:
15.75 要修正为 16
15.125 要修正为 15.5
都是向上取整
比如:
15.75 要修正为 16
15.125 要修正为 15.5
都是向上取整
作者: myjsy 发布时间: 2011-06-10
SQL code
floor()取最小整数 ceiling()--取最大整数
作者: chuanzhang5687 发布时间: 2011-06-10
select ceiling(15.125) as 向上取整
作者: chuanzhang5687 发布时间: 2011-06-10
SQL code
declare @a nvarchar(50) declare @b nvarchar(50) select @a ='15.125' select @b = substring(@a,1,charindex('.',@a)-1) if(substring(@a,charindex('.',@a)+1,1)>5) begin print convert(int,@b)+1 end else begin print @b+'.5' end
作者: l3143344 发布时间: 2011-06-10
SQL code
DECLARE @var FLOAT SET @var = 23.558 SELECT CASE WHEN @var > CAST(@var AS INT) AND @var < CAST(@var AS INT)+0.5 THEN CAST(@var AS INT)+0.5 WHEN @var > CAST(@var AS INT)+0.5 AND @var < CAST(@var AS INT)+1 THEN CAST(@var AS INT)+1 ELSE @var END
作者: wwwwgou 发布时间: 2011-06-10
引用 2 楼 chuanzhang5687 的回复:
select ceiling(15.125) as 向上取整
select ceiling(15.125) as 向上取整
请看我的说明,谢谢
我的要求是 15.5 ,不是 16
作者: myjsy 发布时间: 2011-06-10
SQL code
declare @i decimal(18,1) set @i=15.65 select case when ceiling(@i+0.5)=ceiling(@i) then ceiling(@i-0.5)+0.5 else ceiling(@i) end
作者: cd731107 发布时间: 2011-06-10
引用 6 楼 cd731107 的回复:
SQL code
declare @i decimal(18,1)
set @i=15.65
select case when ceiling(@i+0.5)=ceiling(@i) then ceiling(@i-0.5)+0.5 else ceiling(@i) end
SQL code
declare @i decimal(18,1)
set @i=15.65
select case when ceiling(@i+0.5)=ceiling(@i) then ceiling(@i-0.5)+0.5 else ceiling(@i) end
+
作者: yubofighting 发布时间: 2011-06-10
都是正数的话,可以这样:
SQL code
SQL code
declare @v float set @v = 15.125 select (ceiling(@v)+floor(@v+0.5))/2 /* ---------------------- 15.5 */ set @v = 15.66 select (ceiling(@v)+floor(@v+0.5))/2 /* ---------------------- 16 */
作者: coleling 发布时间: 2011-06-10