我正在規範化數據庫的過程中,其中一部分涉及將一個表中的列從FLOAT
轉換爲DECIMAL(28,18)
。當我然後嘗試將此轉換後的列連接回源列時,它在某些情況下不會返回結果。MS SQL浮點十進制比較問題
這似乎蜜蜂是與它的轉換方式。例如,FLOAT
轉換爲DECIMAL(28,18)
生產:
51.051643260000006000
原始FLOAT
是
51.05164326
我試圖修改FLOAT
的各種方式,並且沒有這些工作的任一:
CAST(51.05164326 AS DECIMAL(28,18)) = 51.051643260000000000
STR(51.05164326 , 28,18) = 51.0516432599999990
的原因轉換是由於改善這些字段的準確度。
有沒有人得到了一致的策略,這些數字轉換,並能夠確保後續工作的加盟?
在此先感謝
CM
浮點數字是不準確的數字,但近似值。轉換爲字符串通常將其舍入,以便它看起來像一個確切的數字,而確切的表示形式實際上是不同的。你不應該嘗試加入花車。 – Lucero 2012-04-26 08:54:29
不幸的是我沒有很多選擇。你能推薦一種方法來解決這個問題嗎? – CatchingMonkey 2012-04-26 09:04:55
我會嘗試轉換/將其轉換爲'decimal',然後使用['ROUND()']將其舍入到14位數字(http://msdn.microsoft.com/zh-cn/library/ms175003.aspx )。 – Lucero 2012-04-26 09:44:17