日期:2014-05-17 浏览次数:20608 次
IF OBJECT_ID('fn_test') IS NOT NULL DROP FUNCTION dbo.fn_test
go
 
CREATE FUNCTION fn_test (@s VARCHAR(100) , @i INT)
RETURNS FLOAT
AS 
BEGIN
  DECLARE @f FLOAT
  SET @f = CAST(@s AS FLOAT)
  DECLARE @d INT
  SET @d = 0
  DECLARE @n INT  
  IF @f > 0 
    SET @n = 1
  ELSE 
    SET @n = -1
  SET @f = ABS(@f)
  WHILE @f > 1 
    BEGIN
      SET @d = @d + 1
      SET @f = @f / 10
    END
  WHILE @f < 0.1 
    BEGIN
      SET @d = @d - 1
      SET @f = @f * 10
      SET @i = @i - 1
    END
  RETURN @n*ROUND(@f,@i)*POWER(CAST(10 AS FLOAT),@d)
END
GO