1

在 SSIS 的派生列中的计算存在一些问题。

我正在尝试执行以下计算 -

4206 + ((4206 * 4206) * 0.000150000000000) + ((4206 * 4206 * 4206) * 0.000000010000000)

我收到一个错误 -

**The magnitude of the result of a binary operation overflows the maximum size for result data type**

将此计算粘贴到我的 C# Web 应用程序中会导致类似的问题 -

**The operation overflows at compile time in checked mode** 

它在抱怨这个部分 - 4206 * 4206 * 4206。它也可以通过更改它在 Web 应用程序中解决4206 * 4206 * 4206L,但我不知道如何在 SSIS 包中解决这个问题。

有没有人遇到过这个问题?任何想法,将不胜感激。

提前致谢。

编辑

溢出异常现已解决,但新旧计算返回的值略有不同,例如使用 415 作为输入值而不是 4206 -

旧计算值 = 419.014582 新计算值 = 419.042100

准确的计算是——

老的 -InputValue + ((InputValue * InputValue) * (DT_DECIMAL,20)@[User::SquaredValue]) + ((InputValue * InputValue * InputValue) * (DT_DECIMAL,20)@[User::CubicValue])

新的 -InputValue + (((DT_DECIMAL,20)@[User::SquaredValue] * InputValue * InputValue)) + (((DT_DECIMAL,20)@[User::CubicValue] * InputValue * InputValue * InputValue))

编辑

围绕计算中的细微差异的第二个问题作为一个新问题打开。

4

1 回答 1

5

为什么不只是改变

((4206 * 4206 * 4206) * 0.000000010000000)

(0.000000010000000 * 4206 * 4206 * 4206)

避免内部行计算中出现如此大的数字。我会用

4206 + (0.00015 * 4206 * 4206) + (0.00000001 * 4206 * 4206 * 4206)
于 2013-10-07T11:43:50.513 回答