2016-05-01 55 views
0

我有一個類型爲「float」的列,它顯然是舍入到6位數。因此23.123456四捨五入到23.1235 .....和12345678四捨五入到12345700SQL表列「float」舍入到6位數字

如何防止/更改此?

由於

+1

只需使用更高精度的數據類型。雙倍,十進制等 – vittore

+0

我在金融行業從事多年工作,從我的經歷來看,我可以說我總是遇到「浮動」問題。這只是沒有用(因爲其他人已經解釋的原因),當涉及到精確的數字時,這取決於你在做什麼,這通常是至關重要的。由於我發現了float的許多問題,因此我們從未在任何數據庫中再次使用它,並將所有浮點數更改爲數字。我的建議:不要懶惰,避免使用舒適的浮動,數字需要多一點工作,但從長遠來看,這真的是值得的(在我看來)。 – Reboon

回答

0

浮法(和Real爲完整起見)是近似的值。請閱讀浮點數據類型,例如here

如果您需要更高精度的操作結果,請使用數字或小數數據類型。從上面的鏈接中,在sql server中,默認的最大精度是38.即在執行計算時,您將有多達38位精確數字。

+0

我明白了。所以我有很多數據存儲在浮動列中,我需要將它轉換爲十進制。如果我只是更改列類型,是否應該有任何問題?當然,我以前的數據不會有十進制類型的精度,但沒關係。我只是想確保浮點值123.456不會變成999之類的東西......我用虛擬列測試了它,它似乎工作正常。如果我更改列類型,您是否會預測現有數據存在任何問題? – Tortooga

+0

從浮點數切換到數字/小數點是相當可預測的。要了解有關RDBMS的cast/convert操作的詳細信息,請參閱Google – vittore