我的查詢是比較簡單的,但想知道根本原因從浮動不正確的轉換爲十進制
SQL查詢轉換浮點數到十進制給出了不正確的結果。
例子:
Select CAST(CONVERT(DECIMAL(25,8), CONVERT(FLOAT,338193293.16))AS VARCHAR(255))
預期結果:338193293.16000000
實際結果:338193293.16000003
從何從額外3
?
我的查詢是比較簡單的,但想知道根本原因從浮動不正確的轉換爲十進制
SQL查詢轉換浮點數到十進制給出了不正確的結果。
例子:
Select CAST(CONVERT(DECIMAL(25,8), CONVERT(FLOAT,338193293.16))AS VARCHAR(255))
預期結果:338193293.16000000
實際結果:338193293.16000003
從何從額外3
?
數字的數量太多 - 無論小數點後它們只有2。 38193293.16或使用FLOAT(24)。對於正常的FLOAT,有「精度= 7位數」。
這是一個正常的行爲。浮動通常會導致浮動錯誤。聽起來很糟糕。只需使用十進制,這不會給你這樣的錯誤。 – Ionic
可能是有用的http://stackoverflow.com/questions/4199371/sql-server-precision-crazyness – Tanner