我在将存储在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