この問題に関するスレッドや投稿がインターネット上にいくつかあることは知っており、それらを読みました (すべての記事ではないことを認めなければなりません) が、どれも私を完全に満足させるものではありませんでした。
私の状況:
ODP.net (dll バージョン 2.111.6.0) を使用して Oracle DB (バージョン 10 + 11) にアクセスし、DataReader を使用してデータ (.NET 3.5、C#) を取得しています。
このコードを使用すると、「System.OverflowException (算術演算がオーバーフローしました。)」が発生します。
decimal.TryParse(oraReader.GetOracleDecimal(0).Value.ToString(),
NumberStyles.Any, null, out parsedOraDecimal)
この結果は、' 3,000000000000000000000000000000000000000000000000000000E-126 'という値になります。
decimal.TryParse(oraReader.GetOracleValue(0).ToString(),
NumberStyles.Any, null, out parsedOraDecimal)
ここで、この値を適切に取得して評価する方法を見つける必要があります。DB は、制御できない他のアプリからも使用されるため、そこでの変更は不可能です。
C# コードの型を「decimal」から「double」に変換することも、実際にはオプションではありません。
何か案は?