我有一个计算Rate和RateIns的SSIS包。
当我在DEV环境中运行时,Rate = 1.3850588235,RateIns = 1.138941176 5
然而,当我在Prod环境中运行时,Rate = 1.3850588235,RateIns = 1.138941176 4
我试图模仿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.3850588235,RateIns = 1.1389411765
这证实了,问题出在SSIS包中。 我比较了Prod和Dev软件包中组件的元数据。全部比赛。 实际上,它已经部署到Prod!的相同SSIS包中。
我想知道,为什么Prod SSIS包显示RateIns = 1.1389411764
有什么建议吗?
答案 0 :(得分:0)
这可能是一个愚蠢的问题,但是prod与dev的硬件相同。不同的机器很容易为浮点数学提供不同的结果。也许您可以根据IEEE 754 https://en.wikipedia.org/wiki/IEEE_754规则进行数学计算,看看是否至少有一个环境能够提供正确的结果。
这是一个在线ieee754计算器 http://babbage.cs.qc.cuny.edu/IEEE-754/