将SQL FLOAT转换为SQL INT,丢失数据 [英] Converting SQL FLOAT to SQL INT, lost data

查看:241
本文介绍了将SQL FLOAT转换为SQL INT,丢失数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些问题,将存储在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆