将SQL FLOAT转换为SQL INT,丢失数据 [英] Converting SQL FLOAT to SQL INT, lost data
问题描述
我有一些问题,将存储在FLOAT数据类型中的一些数据转换为存储在INT数据类型中的数据。以下示例说明了我的问题:
I'm having some problems with converting some data stored in a FLOAT datatype to data stored in an INT datatype. The below example illustrates my problem:
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。
The desired results would be: ID = 1 VALUE = 15662
However when coming from the @data
table, I don't seem to get this. I instead get ID = 1 VALUE = 15661.
有没有人知道为什么是?我猜这是一种浮动细微差别。但我从来没有想过它会有一个像上面的问题。有任何想法吗?先感谢您的帮助。
Does anyone have any idea why this is? I'm guessing it's some sort of float nuance. But I never thought it would have a problem with something like the above. Any ideas? Thanks in advance for your help.
推荐答案
这是经典的(int)((0.1 + 0.7)* 10)问题。
使用 ROUND(weight * 1000000,0)
。
这篇关于将SQL FLOAT转换为SQL INT,丢失数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!