sql server中round的怪现象(50)

  • 主题发起人 主题发起人 zbdzjx
  • 开始时间 开始时间
Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
前几天和一个朋友在用round的时,碰到一个怪的现象,大家可以试试,不知有没有人提出过。大家试试下面的语句,看结果:select round(1/6000,8),round(1.0/6000,8),round(1.00/6000,8),round(1.000/6000,8),round(1.0000/6000,8),round(1.00000/6000,8),round(1.000000/6000,8),round(1.00000000000000000000000/6000,8)结果是挺怪的。
 
MSSQL会根据给的数判断需要进行整数运算还是浮点数运算,要正确的浮点数运算结果可如下:declare @a float,@b floatselect @a=1,@b=6000select round(@a / @b,8)
 
具体结果我忘了,好象是下面的:round(1/6000,8)=0round(1.0/6000,8)=0.000166round(1.00/6000,8)=0.00016667round(1.00000000000000000000000/6000,8)=0.00016667000000000000000000000000意思是说,虽然是round8位结果,但结果不一定是几位的.
 
SQL Server 2000下的结果:Expr1 Expr2 Expr3 Expr4 Expr5 Expr6 Expr7 Expr80 .000166 .0001666 .00016666 .00016667 .00016667 .00016667 .00016667SELECT ROUND(CAST(1 AS float) / 6000, 8) => .00016667
 
楼上的,你的最后一个结果没有后面的很多的0吗????
 
企业管理器里面直接执行的,没看到许多0
 
oracle中的结果正常。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部