sql 2000关于cast XX as int的问题
declare@idecimal(12,2)set@i=9.87selectcast(@iasint)--结果是截断的:9V.Sdeclare@imoneyset@i=9...
declare @i decimal(12,2)
set @i=9.87
select cast(@i as int) --结果是截断的:9
V.S
declare @i money
set @i=9.87
select cast(@i as int) --结果是四舍五入的:10
这是为什么呢?
联机丛书中关于cast的这两段话又该怎么理解,感觉是矛盾的啊?
{
当具有不同小数位数的数据类型进行转换时,值将被截断为最精确的数位。例如,SELECT CAST(10.6496 AS int) 的结果为 10。
转换时,若目标数据类型的小数位数小于源数据类型的小数位数,则要转换的值将被四舍五入。例如,CAST(10.3496847 AS money) 的结果是 $10.3497。
} 展开
set @i=9.87
select cast(@i as int) --结果是截断的:9
V.S
declare @i money
set @i=9.87
select cast(@i as int) --结果是四舍五入的:10
这是为什么呢?
联机丛书中关于cast的这两段话又该怎么理解,感觉是矛盾的啊?
{
当具有不同小数位数的数据类型进行转换时,值将被截断为最精确的数位。例如,SELECT CAST(10.6496 AS int) 的结果为 10。
转换时,若目标数据类型的小数位数小于源数据类型的小数位数,则要转换的值将被四舍五入。例如,CAST(10.3496847 AS money) 的结果是 $10.3497。
} 展开
1个回答
展开全部
Tsql 中不同的数据类型,转换为int时,所进行的操作是不一样。
numeric → int :截断
money → int :舍入
decimal → int :截断
------------------------------------
其它数据类型之间转换时,也存在这样的情况。
-------------------------------------
怎么感觉我的回答和你问的问题是一样的呢!!!!!!!
numeric → int :截断
money → int :舍入
decimal → int :截断
------------------------------------
其它数据类型之间转换时,也存在这样的情况。
-------------------------------------
怎么感觉我的回答和你问的问题是一样的呢!!!!!!!
追问
谁说不是呢,哎!关键联机丛书上这两句话到底毛线意思,尤其是第一句,怎么叫具有不同小数位数的数据类型进行转换,这太让人费解了…
追答
但是联机丛书上,也给出了,具体转换时的情况呀。
比如是截断,还是舍入。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询