天花板和地板怀疑 [英] Ceiling and Floor doubt
问题描述
声明 @ value 十进制
SET @ value = 11 。 49
SELECT ceiling( @ value )
o / p - > 11
声明 @value decimal
SET @value = 11 。 51
SELECT ceiling( @ value )
o / p - > 12
------------------------但这是如何变化的如下所示------------------------------
声明 @ value decimal ( 10 , 4 )
SET @ value = 11 。 51
SELECT ceiling( @ value )
o / p - > 12
声明 @ value decimal ( 10 , 4 )
SET @ value = 11 。 49
SELECT ceiling( @ value )
o / p - > 12
----------------------------地板表现相同喜欢天花板---------------------------
声明 @ value decimal
SET @ value = 11 。 49
SELECT floor( @ value )
o / p - > 11
声明 @value decimal
SET @value = 11 。 51
SELECT floor( @ value )
o / p - > 12
----------------我得到的结果像如果我在这下面改变如下这个------------------------
声明 @ value decimal ( 10 , 4 )
SET @ value = 11 。 11
SELECT floor( @ value )
o / p - > 11
声明 @ value decimal ( 10 , 4 )
SET @ value = 11 。 88
SELECT floor( @ value )
o / p-- > 11
请清楚楼层和天花板的疑问
< blockquote>那是因为在声明变量@Value时你使用了十进制数据类型,你没有指定精度和比例..所以它会考虑默认的精度和比例..
默认精度为18,Scale为0
声明 @ Value decimal - 相当于Declare @值十进制(18,0)
在这种情况下
DECLARE @ value DECIMAL - (18,0)
SET @ value = 11 。 49
选择 @ Value as 值,上限( @ value ) as CeilingValue,Floor( @ Val ue ) as FloorValue
输出将为:
价值CeilingValue FloorValue
11 11 11
如果您指定精度和比例,那么它将是:
DECLARE @ value DECIMAL ( 10 , 4 )
SET @ value = 11 。 49
选择 @ Value as 值,上限( @ value ) as CeilingValue,Floor( @ Value ) as FloorValue
输出将为:
Value CeilingValue FloorValue
11 。 4900 12 11
查看此链接: http:// msdn。 microsoft.com/en-us/library/ms187746.aspx [ ^ ]
您好,请看这个链接:)
http://msdn.microsoft.com/en-us/library/ms190927(v=sql。 105).aspx [ ^ ]
http://www.mssqltips.com/sqlservertip/1589/sql-server-rounding-functions--round-天花板和地板/ [ ^ ]
运行查询并检查输出,希望它能清除疑点。声明 @ value decimal < span class =code-comment> - 注意您已声明十进制类型但未设置精度。所以val。将被舍入。
SET @ value = 11 。 51 - 它以12为i / p。
- 如果你通过11.49,它将会因为声明中没有指定精度限制,所以自动应用舍入和原始值为11.
SELECT @ value as Original_val,ceiling( @ value ) as ceiling_val,floor( @ value ) as floor_val
声明 @ val decimal ( 10 , 4 )
SET @val = 11 。 49
SELECT @ val as Original_val,ceiling( @ val ) as ceiling_val,floor( @ val ) as floor_val
SET @ val = < span class =code-digit> 11 。 51
SELECT < span class =code-sdkkeyword> @ val as Original_val,ceiling( @ val ) as ceiling_val,floor( @ val ) as floor_val
快乐编码!
:)
declare @value decimal
SET @value = 11.49
SELECT ceiling(@value)
o/p --> 11
declare @value decimal
SET @value = 11.51
SELECT ceiling(@value)
o/p -->12
------------------------But how this changes as below------------------------------
declare @value decimal(10,4)
SET @value = 11.51
SELECT ceiling(@value)
o/p-->12
declare @value decimal(10,4)
SET @value = 11.49
SELECT ceiling(@value)
o/p-->12
----------------------------Floor behaving same like ceiling---------------------------
declare @value decimal
SET @value = 11.49
SELECT floor(@value)
o/p --> 11
declare @value decimal
SET @value = 11.51
SELECT floor(@value)
o/p -->12
----------------I get result like this below if i change below like this------------------------
declare @value decimal(10,4)
SET @value = 11.11
SELECT floor(@value)
o/p-->11
declare @value decimal(10,4)
SET @value = 11.88
SELECT floor(@value)
o/p-->11
Kindly clear the doubt of floor and ceiling
That's Because while Declaring the Variable @Value u used Decimal data type, u haven't specified the precision and scale.. so it will consider the default Precision and Scale..
Default Precision is 18 and Scale is 0
Declare @Value decimal-- is equivalent to Declare @Value Decimal(18,0)
in that case
DECLARE @value DECIMAL--(18,0) SET @value = 11.49 Select @Value as Value,ceiling(@value) as CeilingValue,Floor(@Value) as FloorValue
The Output will be:Value CeilingValue FloorValue 11 11 11
Where as if u specify the precision and scale then it will be:
DECLARE @value DECIMAL(10,4) SET @value = 11.49 Select @Value as Value,ceiling(@value) as CeilingValue,Floor(@Value) as FloorValue
the Output will be:
Value CeilingValue FloorValue 11.4900 12 11
Check this Link:http://msdn.microsoft.com/en-us/library/ms187746.aspx[^]
Hi, see this link:)
http://msdn.microsoft.com/en-us/library/ms190927(v=sql.105).aspx[^]
http://www.mssqltips.com/sqlservertip/1589/sql-server-rounding-functions--round-ceiling-and-floor/[^]
Run Query and check output hope it will clear doubts.declare @value decimal --NOTE you have declared decimal type but not set precision. so val. will be rounded. SET @value = 11.51 --it's taking 12 as i/p. --if you pass 11.49, it will auto apply rounding and original val will be 11. just because no precision limit is specified in declaration. SELECT @value as Original_val, ceiling(@value) as ceiling_val,floor(@value) as floor_val declare @val decimal(10,4) SET @val = 11.49 SELECT @val as Original_val, ceiling(@val) as ceiling_val,floor(@val) as floor_val SET @val = 11.51 SELECT @val as Original_val, ceiling(@val) as ceiling_val,floor(@val) as floor_val
Happy Coding!
:)
这篇关于天花板和地板怀疑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!