調試一些與財務相關的SQL代碼,發現數值(24,8)數學精度存在一個奇怪的問題。SQL server 2005數字精確損失
運行在您的MSSQL以下查詢,你會得到A + B * C表達式的結果是0.123457
選擇, B, C, A + B * C FROM ( SELECT CAST (0.12345678 AS NUMERIC(24,8))AS A, CAST(0 AS NUMERIC(24,8))AS B, CAST(500 AS NUMERIC(24,8))爲C )筆
所以我們失去了2個重要的符號。試圖以不同的方式得到這個修復,我得到了中間乘法結果(這是零!)到數值(24,8)的轉換可以正常工作。
最後有一個解決方案。但是我仍然有一個問題 - 爲什麼MSSQL會以這種方式運行,以及我的示例中實際發生了哪些類型轉換?
您的意思是NUMERIC(32,6))?如果總和必須是38 – Edmondo1984 2012-12-03 19:47:08
@ Edmondo1984請閱讀鏈接並理解這兩個數字的含義。 – 2012-12-03 20:06:57