SSIS没有给出预期的结果

时间:2017-12-13 03:16:43

标签: sql-server ssis

在SSIS中,我有一个派生专栏给我一个我没想到的结果。对于这个公式,它特别简单((200 * 29.7) - 5940)* 1我希望该值为0.但是当查看此派生列的结果时,我发现该值为0.000000000000909494701772928!< / p>

用于此计算的值直接从数据库中提取,并且所有这些值都是双精度浮点数据类型。

不幸的是,只需将结果列的数据类型更改为整数就无济于事,因为我需要这些小数位。

我很好奇,这个数字的原因可能是什么?

1 个答案:

答案 0 :(得分:0)

差异的原因是数值精度。

尝试在SSMS中运行这些简单的SELECT

select (((cast(200 as numeric(9)) * cast(29.7 as numeric(9)) - cast(5940 as numeric(9))))) 
select (((cast(200 as numeric(38,17)) * cast(29.7 as numeric(38,17)) - cast(5940 as numeric(38,17))))) 

正如@Nick指出的那样,使用DECIMALNUMERIC代替FLOAT

decimal and numeric

DECIMALNUMERIC的默认精度为18。

将数据类型从双精度浮点[DT_R8]更改为[DT_DECIMAL]