gpt4 book ai didi

sql - 将 SQL FLOAT 转换为 SQL INT,丢失数据

转载 作者:行者123 更新时间:2023-12-04 05:34:38 26 4
gpt4 key购买 nike

我在将一些存储在 FLOAT 数据类型中的数据转换为存储在 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.
有谁知道这是为什么?我猜这是某种 float 细微差别。但我从没想过它会遇到像上面这样的问题。有任何想法吗?在此先感谢您的帮助。

最佳答案

这是经典(int)((0.1+0.7)*10)问题。由于浮点数具有任意精度,因此即使在非常简单的情况下,转换为 int 时也可能会丢失一些数据。

使用 ROUND(weight * 1000000.0, 0)反而。

关于sql - 将 SQL FLOAT 转换为 SQL INT,丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com