我的一个UDF的一部分有一个试图找到浮点数后的小数位数的部分,并返回乘以10的幂的数字,使得它是一个整数。以1.0005为例,这里是段:
DECLARE @num FLOAT = 1.0005
DECLARE @exponent AS INT = 0
WHILE @num - FLOOR(@num) > 0.000001
BEGIN
SET @exponent += 1
SET @num *= 10
END
当我在SSMS 2012中进行调试时,如果我在第四次迭代之后在立即窗口中评估? CASE WHEN @num - FLOOR(@num) > 0.000001 THEN 1 ELSE 0 END
,那么在'while'行,我得到0 - 但是,循环会无限期地运行。
有什么想法吗?
答案 0 :(得分:0)
我试过这个,看看发生了什么...... @z没有改变......
DECLARE @num FLOAT = 1.0005
DECLARE @exponent AS INT = 0
declare @x float
declare @z float
WHILE @num - FLOOR(@num) > 0.000001
BEGIN
SET @exponent += 1
SET @num *= 10
set @x = FLOOR(@num)
set @z = @num - FLOOR(@num)
END