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 パッケージでこれを解決する方法がわかりません。

以前にこの問題に遭遇した人はいますか? どんなアイデアでも大歓迎です。

前もって感謝します。

編集

オーバーフロー例外は解決されましたが、古い計算と新しい計算ではわずかに異なる値が返されます。たとえば、入力値として 4206 ではなく 415 が使用されています -

古い計算値 = 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))

編集

計算のわずかな違いに関する 2 番目の問題は、新しい質問として開かれました。

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 に答える