Sql Prod和Dev(SSIS包)之间的小数舍入行为不同

Sql Prod和Dev(SSIS包)之间的小数舍入行为不同,sql,sql-server,ssis,sql-server-2012,Sql,Sql Server,Ssis,Sql Server 2012,我有一个SSIS包,可以计算费率和费率 当我在DEV环境中运行它时,Rate=1.3850588235,RateIns=1.1389411765 但是,当我在Prod环境中运行这个时,Rate=1.3850588235,RateIns=1.1389411764 我尝试在SSMS中模拟SSIS逻辑,代码如下: CREATE TABLE #TEMP( GST [decimal](10, 2) NULL, [GSTFin] [decimal](10, 2) NULL, [GSTExl] [decima

我有一个SSIS包,可以计算费率和费率

当我在DEV环境中运行它时,Rate=1.3850588235,RateIns=1.1389411765

但是,当我在Prod环境中运行这个时,Rate=1.3850588235,RateIns=1.1389411764

我尝试在SSMS中模拟SSIS逻辑,代码如下:

CREATE TABLE #TEMP(
GST [decimal](10, 2) NULL,
[GSTFin] [decimal](10, 2) NULL,
[GSTExl] [decimal](10, 2) NULL,
[Rate] [decimal](18, 10) NULL,
[RateIns] [decimal](18, 10) NULL
)
insert into #temp values (11773.00,2092.00,8500.00,0,0)
UPDATE #TEMP
SET Rate=ISNULL(GST,0)/ISNULL(GSTExl,0)
,RateIns=(ISNULL(GST,0) - ISNULL(GSTFin,0))/ISNULL(GSTExl,0) 

SELECT * FROM #temp
DROP TABLE #TEMP
结果:DEV和Prod都显示相同的值: 比率=1.385058235,比率=1.138941765

这证实了问题在SSIS包中。 我比较了Prod和Dev包中组件的元数据。全部匹配。 事实上,它与部署到Prod的SSIS包相同

我想知道,为什么Prod SSIS包显示RateIns=1.138941764


有什么建议吗?

这可能是一个愚蠢的问题,但是prod和dev的硬件是相同的。不同的机器很容易给出不同的浮点数学结果。也许你可以根据IEEE754规则进行计算,看看是否至少有一个环境给出了正确的结果

这里还有一个在线ieee754计算器

这可能是一个愚蠢的问题,但是prod和dev的硬件是相同的。不同的机器很容易给出不同的浮点数学结果。也许你可以根据IEEE754规则进行计算,看看是否至少有一个环境给出了正确的结果

这里还有一个在线ieee754计算器

这不是你的包裹。它与十进制数据类型有关。之前有人解释过,很遗憾我现在找不到线索。谢谢你,普拉巴特。有没有在谷歌搜索的提示?我试着浏览这个话题,但是没有用。干杯!我又发现它是这样的这不是你的包裹。它与十进制数据类型有关。之前有人解释过,很遗憾我现在找不到线索。谢谢你,普拉巴特。有没有在谷歌搜索的提示?我试着浏览这个话题,但是没有用。干杯!我又发现它是这样的嗨,肖恩,谢谢你的想法。是的,两台服务器(RAM/SSD/CPU)中的硬件类似。不确定,如果你的意思不是这3个。关于ieee754计算器->我不知道如何使用它。我应该在两台服务器上运行计算,并尝试将其与计算器值匹配吗?唯一应该引起差异的是CPU和操作系统/软件,如果两个系统给出不同的结果,我建议如果您知道输入是什么,使用IEEE-754规范或其中一个计算器手动进行计算,并将结果与两个系统进行比较,发现其中一个或可能的两个系统都会出现意外值。这一切都假设系统符合ieee754。非常实数的除法/乘法之间的转换可能会引起问题()嗨,肖恩,谢谢你的想法。是的,两台服务器(RAM/SSD/CPU)中的硬件类似。不确定,如果你的意思不是这3个。关于ieee754计算器->我不知道如何使用它。我应该在两台服务器上运行计算,并尝试将其与计算器值匹配吗?唯一应该引起差异的是CPU和操作系统/软件,如果两个系统给出不同的结果,我建议如果您知道输入是什么,使用IEEE-754规范或其中一个计算器手动进行计算,并将结果与两个系统进行比较,发现其中一个或可能的两个系统都会出现意外值。这一切都假设系统符合ieee754。非常实数的除法/乘法之间的转换可能会导致问题()