2012-06-20 152 views
8

對於正在轉換爲float的SQL int,如何設置浮點數的精度?SQL設置浮點精度

這是我想截斷爲兩個或小數點後3位的選擇:

AVG(Cast(e.employee_level as Float))avg_level, 

謝謝!

回答

22

在TSQL中,您可以爲float,24或53指定兩種不同的尺寸。這將分別將精度設置爲7或15位。

如果你想要做的是截斷到小數點後的一組號碼,就可以使用ROUND,即:

ROUND(AVG(CAST(e.employee_level as float)), 3) 
+2

需要注意的是,如果您對24或53以外的某個n使用float(n),則它將四捨五入爲24或53 – Bort

1

作爲一般規則,你不能指定後的數字位數浮點數的小數點。浮點數據類型存儲與任何給定值最接近的浮點數近似值。最接近的浮點近似不可能有你想要的位數。儘管您可能會在第三個數字之後抑制每個數字,但這隻會改變數值的外觀,而不會改變數值本身。

整數是一個不同的故事。整數 - 存儲,轉換或轉換爲浮點數據類型 - 將精確地存儲在大範圍內。浮點數據類型不必爲整數存儲任何小數單位。

我建議,雖然是你最好的做法是

  • 避免鑄造整數浮點,如果你不需要分數單位,或
  • 鑄造整數爲十進制或數字如果你需要小數單位,或
  • 句柄顯示問題完全在應用程序代碼中。