我在將存儲在FLOAT數據類型中的一些數據轉換爲存儲在INT數據類型中的數據時遇到了一些問題。下面的例子說明了我的問題:將SQL FLOAT轉換爲SQL INT,丟失數據
DECLARE @data TABLE
(
id INT,
weight FLOAT
)
INSERT INTO @data VALUES(1,0.015662)
SELECT CAST(weight * 1000000 AS INT) FROM @data
SELECT 0.015662 * 1000000
SELECT CAST(0.015662 * 1000000 AS INT)
期望的結果將是:ID = 1 VALUE = 15662
但是從@data
表來臨的時候,我似乎並沒有得到這一點。我反而得到ID = 1 VALUE = 15661.
有沒有人有任何想法,爲什麼這是?我猜這是某種浮動的細微差別。但我從來沒有想過它會有類似上述的問題。有任何想法嗎?在此先感謝您的幫助。
ROUND(weight * 1000000.0,0)會更好,因爲我們不知道哪個系統作者使用。 – Lex 2010-12-09 13:43:20