1
我的一個UDF的一部分有一個小節,試圖找到浮點數後的小數位數,並返回乘以10的冪乘以整數。使用1.0005作爲一個例子,這裏的段:SQL評估循環條件錯誤
DECLARE @num FLOAT = 1.0005
DECLARE @exponent AS INT = 0
WHILE @num - FLOOR(@num) > 0.000001
BEGIN
SET @exponent += 1
SET @num *= 10
END
當我調試這個在2012年SSMS,對「而」行,如果我在其第四次迭代立即窗口評估? CASE WHEN @num - FLOOR(@num) > 0.000001 THEN 1 ELSE 0 END
起,我得到0 - 然而,循環無限期地運行。
任何想法?
事實上它不 - 謝謝你,幫我蘇斯什麼,我相信是問題。 @z保持略低於1,表明@num在每次迭代中只是小於一個整數 - 將其降低到錯誤的浮點精度(出於某種原因總是不準確的破壞我的代碼的方向!),WHILE @num = FLOOR(ROUND(@ num,10))'代替現有的while子句修復問題。 – user2163043
* WHILE @num <> FLOOR(ROUND(@ num,10))'even! – user2163043
酷!不知道你在找什麼,所以沒有提出任何建議,但認爲調試會有幫助... – BWS