在SSIS的派生列中计算时遇到一些问题.
我正在尝试执行以下计算 -
4206 + ((4206 * 4206) * 0.000150000000000) + ((4206 * 4206 * 4206) * 0.000000010000000)
Run Code Online (Sandbox Code Playgroud)
我收到错误 -
**The magnitude of the result of a binary operation overflows the maximum size for result data type**
Run Code Online (Sandbox Code Playgroud)
将此计算粘贴到我的C#Web应用程序中会导致类似的问题 -
**The operation overflows at compile time in checked mode**
Run Code Online (Sandbox Code Playgroud)
它抱怨这一节 - 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))
编辑
关于计算中的细微差别的第二个问题是作为一个新问题打开的.
为什么不改变呢
((4206 * 4206 * 4206) * 0.000000010000000)
Run Code Online (Sandbox Code Playgroud)
至
(0.000000010000000 * 4206 * 4206 * 4206)
Run Code Online (Sandbox Code Playgroud)
避免在内部行计算中出现这么大的数字.我用了
4206 + (0.00015 * 4206 * 4206) + (0.00000001 * 4206 * 4206 * 4206)
Run Code Online (Sandbox Code Playgroud)