我有一個視圖,需要爲存儲爲float的列返回類型十進制。在SQL Server 2008中將浮點數轉換爲十進制數
我可以投每一列到十進制如下:
, CAST(Field1 as decimal) Field1
這種方法的問題在於,小數默認爲18,0,它會自動舍入浮動列0。我想保持精度高達12位小數。
然而,如果我這樣做:
, CAST(Field1 as decimal(12,12)) Field1
我得到一個運行時錯誤:
"Arithmetic overflow error converting float to data type numeric"
浮子列被定義爲長度:8精度:53在表中。我無法修改任何關於桌子的事情。
什麼是正確的方式將它作爲十進制轉換爲輸出小數精度?
我的建議是,你停止存儲數據爲float,因爲它是一個不精確的數據類型,如果你對它進行計算,你會得到舍入誤差。 – HLGEM 2010-11-15 18:04:40