为什么我在这个演员表达式中丢失了两个小数点?

时间:2012-05-15 20:02:17

标签: sql-server tsql

我在这里缺少什么?

select cast ( ( cast (100 * 39  as decimal )  / 41) as decimal(5,2)) 

给出95.12的结果

但是

declare @percent decimal 
set  @percent = cast ( ( cast (100 * 39  as decimal )  / 41)  as decimal(5,2)) 
select @percent     

得到95的结果

两个2小数点发生了什么,如何让它们回到变量中?

1 个答案:

答案 0 :(得分:7)

DECIMAL本身没有任何小数位(实际上是DECIMAL(18,0))。您需要指定精度和比例,例如

DECLARE @percent DECIMAL(5,2);
SET @percent = 1.0 * (100 * 39) / 41;
SELECT @percent;