對於SQL Server 2008R2,當將「相同」數字舍入爲小數或浮點數時,我會得到一個符號差異。示出差異擺脫浮動的負零值
樣品的編號:
DECLARE @f float = -0.00001;
DECLARE @d decimal = -0.00001;
PRINT CONVERT(varchar,ROUND(@f, 4)) --- outputs -0
PRINT CONVERT(varchar,ROUND(@d, 4)) --- outputs 0
我需要浮點值舍入爲0,不-0。
我認爲它歸結爲IEEE 754規範,它定義了兩個零表示(正數和負數),而小數只有一個零。我認爲float上的相等運算符可以處理這個問題,但出於兼容性的原因,我必須比較兩個浮點AS字符串。
是否有一個函數/選項來擺脫負零(至少當轉換爲字符串)?
醜陋但有效的解決方案將是這樣的: 'CONVERT(VARCHAR,CASE WHEN ROUND(@f,4)= -0 0 THEN ELSE ROUND(@f,4)END)'' –
PRINT abs(CONVERT(varchar,ROUND(@f,4)))' –
@RahulTripathi - 這也會將'-4'轉換爲'+ 4' –