問題タブ [overflowexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3052 参照

c# - 整数除算でスローされる OverflowException を停止するにはどうすればよいですか?

OverflowExceptionが必要ないときにスローされます(またはそう思います)。オーバーフローしたビットを破棄して、値がオーバーフローすると予想されるいくつかの奇妙な計算を実行しています。ただし、これを適切に機能させることはできないようです。基本的にこれは、巨大なセット (int.MinValue から int.MaxValue へ) を反復するときに発生する i と j の 1 つのペアです。

アップデート:

-2147483648 / -1 の期待される数学値は 2147483648 です。ただし、この特定のコードは実際には数値を見つけようとはしません。これは、理解するのが少し難しくなった一連のビット操作の一部です。正直なところ、私はその方法を実際に文書化していなかったので、その意図が何であったかさえ知りませんでした. ケースを処理するように設計された特別なコードで意図したとおりに機能することはわかっています。

期待値について:

int は最大で 2147483647 しか保持できないため、オーバーフローを破棄して値 0 を生成することを期待しています。

これについて何か学んだことがあるとすれば、それはおそらく、あいまいなメソッドのドキュメントの重要性です。

0 投票する
1 に答える
165 参照

vb6 - Windows 2003 Server で VB6 アプリケーションを実行するとエラー ";overflow6" が発生する

Windows 2003 Server で VB6 アプリケーションを実行しています。実行すると;overflow6エラーが発生します。

なぜそうなのか誰か教えてもらえますか?

0 投票する
2 に答える
21658 参照

c# - Oracle の数値から C# の 10 進数へ

この問題に関するスレッドや投稿がインターネット上にいくつかあることは知っており、それらを読みました (すべての記事ではないことを認めなければなりません) が、どれも私を完全に満足させるものではありませんでした。

私の状況:
ODP.net (dll バージョン 2.111.6.0) を使用して Oracle DB (バージョン 10 + 11) にアクセスし、DataReader を使用してデータ (.NET 3.5、C#) を取得しています。

このコードを使用すると、「System.OverflowException (算術演算がオーバーフローしました。)」が発生します。

この結果は、' 3,000000000000000000000000000000000000000000000000000000E-126 'という値になります。

ここで、この値を適切に取得して評価する方法を見つける必要があります。DB は、制御できない他のアプリからも使用されるため、そこでの変更は不可能です。

C# コードの型を「decimal」から「double」に変換することも、実際にはオプションではありません。

何か案は?

0 投票する
1 に答える
217 参照

c# - C#-ここでオーバーフローチェックを引き起こす原因は何ですか?

言語仕様に記載されているように、私はC#がオーバーフローチェックを実行しないことに慣れています(§7.5.12)。

チェックされた、またはチェックされていない演算子またはステートメントで囲まれていない非定数式(実行時に評価される式)の場合、外部要因(コンパイラスイッチや実行環境構成など)が要求しない限り、デフォルトのオーバーフローチェックコンテキストはチェックされません。評価を確認しました。

低レベルのコードで配列境界チェックを行うときに、これを利用しました。

インデックスが負の場合、TotalCountを超えるように大きな正の数になると思います。ただし、驚いたことに、負の数を指定するとOverflowExceptionが発生するため、式をunchecked()でラップする必要があります。Visual Studioでプロジェクトオプションを確認しましたが、オーバーフローチェックを有効または無効にするオプションが表示されません。では、なぜここにあるのでしょうか?

0 投票する
4 に答える
5836 参照

vb.net - VB.NETのCInt(Long)は、32ビット環境と64ビット環境で動作が異なります。

今日、Long(Int64)をInteger(Int32)に変換する際に問題が発生しました。問題は、私のコードが常に32ビット環境で機能していたことですが、64ビットコンピューターで同じ実行可能ファイルを試してみると、System.OverflowException例外でクラッシュします

Visual Studio 2008で、デフォルト設定の新しいプロジェクトでこのテストコードを準備しました。

私の32ビットセットアップ(Windows XPSP332ビットおよびWindows732ビット)では「CINTOK」まで出力されますが、64ビットコンピューター(Windows 7 64ビット)では同じものをテストしました実行可能では、例外名のみを出力します。

この動作は文書化されていますか?参照を見つけようとしましたが、惨めに失敗しました。

参考までに、CILコードも残しておきます。

動作が異なる命令は、conv.ovf.i4またはldc.i4.m1/conv.u8ペアのいずれかであると思われます。

何が起こっている?

Convert.ToInt32(long)両方の環境で失敗します。動作が異なるのはCInt(Long)だけです。

0 投票する
2 に答える
401 参照

c# - SQLPlus がすべて問題ないのに、これにより C# で ArithmeticException が発生するのはなぜですか?

4つのテーブルを接続するビューがあります

本が何日遅れたかを調べる小さな日付計算が行われています

を実行するSELECT * FROM BookCopyInfoと、次のような行が得られます

これは正解で、実際には -13 が正解です。

DESC BookCopyInfo戻り値

ただし、C#では

da.Fill 行で例外をキャッチします

OverflowException がユーザー コードによって処理されませんでした。
算術演算でオーバーフローが発生しました。

SQLPlus では問題なく動作するのに、C# では失敗するのはなぜですか? :S

0 投票する
3 に答える
1721 参照

c# - 負の配列サイズでスローされたOverflowExceptionの背後にある理論的根拠?

次のように要約できるコードを記述した後:

OverflowExceptionがスローされたことに驚きました。OverflowException状態のドキュメント:

チェックされたコンテキストでの算術、キャスト、または変換操作の結果、オーバーフローが発生した場合にスローされる例外。

負のサイズと配列の長さを指定すると、この例外の説明にどのように適合するかがわかりませんでした。少し深く掘り下げて、これが実際に指定された動作であることがわかりました。

寸法長の計算値は、次のように検証されます。1つ以上の値がゼロ未満の場合、System.OverflowExceptionがスローされ、それ以上のステップは実行されません。

なぜOverflowExceptionが選ばれたのだろうか。あなたが私に尋ねるなら、それはかなり誤解を招きます。それは私に少なくとも5分の調査を要しました(ここで私の考えを数えません)。誰かがこの(私の考えでは)独特の設計決定に光を当てることができますか?

0 投票する
2 に答える
925 参照

c# - 2 つの System.Runtime.InteropServices.ComTypes.FILETIME オブジェクトを減算する最も安全な方法は何ですか?

System.Runtime.InteropServices.ComTypes.FILETIME2 つのオブジェクトを減算する最も安全な方法は何だろうか? 次のコードを使用しましたが、下位 32 ビット値の負の数が原因で ArithmaticOverflow 例外が発生することがあります。体を囲むuncheckedことが目的に役立つかどうかはわかりません。実行時例外や CS0675 警告メッセージを表示せずに安全に実行する方法について、いくつか提案をお願いします。

0 投票する
8 に答える
156509 参照

c# - 算術演算でオーバーフローが発生しました。(整数の加算)

このエラーを理解できません:

このメソッド SetVolume の呼び出しでは、ボリューム= 2055786000 およびサイズ= 93552000 です。ご覧のとおり、ボリュームは整数プロパティであり、サイズも整数です。

このクラスは dbml エンティティ クラスの部分クラスですが、このボリューム プロパティはデータベース内の列ではなく、「ビジネス オブジェクト プロパティ」として部分クラスにのみ存在します。

詳細を見る:

Data > Item : インデックス付きプロパティを評価するには、プロパティを修飾する必要があり、ユーザーが引数を明示的に指定する必要があります。

代替テキスト

何が原因でしょうか...?

0 投票する
3 に答える
3922 参照

c# - 指数 0 値の 10 進解析 (0+E3)

中間層はシリアル化されたオブジェクトを送信し、サーバー上の Java での数学演算のために 0 が 0E+3 として送信されることがあります。オブジェクトを逆シリアル化すると、XmlException --> System.OverflowException が発生します。これは、値が 10 進数に対して大きすぎるか小さすぎるためです。

decimal.Parse がこの変換を処理できないのはなぜですか?

このような数字からクライアントを保護する方法はありますか?