2015-06-15 47 views
0

我的查詢是比較簡單的,但想知道根本原因從浮動不正確的轉換爲十進制

SQL查詢轉換浮點數到十進制給出了不正確的結果。

例子:

Select CAST(CONVERT(DECIMAL(25,8), CONVERT(FLOAT,338193293.16))AS VARCHAR(255)) 

預期結果:338193293.16000000

實際結果:338193293.16000003

從何從額外3

+3

這是一個正常的行爲。浮動通常會導致浮動錯誤。聽起來很糟糕。只需使用十進制,這不會給你這樣的錯誤。 – Ionic

+0

可能是有用的http://stackoverflow.com/questions/4199371/sql-server-precision-crazyness – Tanner

回答

1

數字的數量太多 - 無論小數點後它們只有2。 38193293.16或使用FLOAT(24)。對於正常的FLOAT,有「精度= 7位數」。

+0

謝謝,但我的問題是無效的? –

+0

額外的數字「003」來自浮點轉換後的近似值。 – i486

+0

這是我的問題,感謝您的幫助 –

相關問題