問題タブ [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.
c# - 整数除算でスローされる OverflowException を停止するにはどうすればよいですか?
OverflowExceptionが必要ないときにスローされます(またはそう思います)。オーバーフローしたビットを破棄して、値がオーバーフローすると予想されるいくつかの奇妙な計算を実行しています。ただし、これを適切に機能させることはできないようです。基本的にこれは、巨大なセット (int.MinValue から int.MaxValue へ) を反復するときに発生する i と j の 1 つのペアです。
アップデート:
-2147483648 / -1 の期待される数学値は 2147483648 です。ただし、この特定のコードは実際には数値を見つけようとはしません。これは、理解するのが少し難しくなった一連のビット操作の一部です。正直なところ、私はその方法を実際に文書化していなかったので、その意図が何であったかさえ知りませんでした. ケースを処理するように設計された特別なコードで意図したとおりに機能することはわかっています。
期待値について:
int は最大で 2147483647 しか保持できないため、オーバーフローを破棄して値 0 を生成することを期待しています。
これについて何か学んだことがあるとすれば、それはおそらく、あいまいなメソッドのドキュメントの重要性です。
vb6 - Windows 2003 Server で VB6 アプリケーションを実行するとエラー ";overflow6" が発生する
Windows 2003 Server で VB6 アプリケーションを実行しています。実行すると;overflow6エラーが発生します。
なぜそうなのか誰か教えてもらえますか?
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」に変換することも、実際にはオプションではありません。
何か案は?
c# - C#-ここでオーバーフローチェックを引き起こす原因は何ですか?
言語仕様に記載されているように、私はC#がオーバーフローチェックを実行しないことに慣れています(§7.5.12)。
チェックされた、またはチェックされていない演算子またはステートメントで囲まれていない非定数式(実行時に評価される式)の場合、外部要因(コンパイラスイッチや実行環境構成など)が要求しない限り、デフォルトのオーバーフローチェックコンテキストはチェックされません。評価を確認しました。
低レベルのコードで配列境界チェックを行うときに、これを利用しました。
インデックスが負の場合、TotalCountを超えるように大きな正の数になると思います。ただし、驚いたことに、負の数を指定するとOverflowExceptionが発生するため、式をunchecked()でラップする必要があります。Visual Studioでプロジェクトオプションを確認しましたが、オーバーフローチェックを有効または無効にするオプションが表示されません。では、なぜここにあるのでしょうか?
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)だけです。
c# - SQLPlus がすべて問題ないのに、これにより C# で ArithmeticException が発生するのはなぜですか?
4つのテーブルを接続するビューがあります
本が何日遅れたかを調べる小さな日付計算が行われています
を実行するSELECT * FROM BookCopyInfo
と、次のような行が得られます
これは正解で、実際には -13 が正解です。
DESC BookCopyInfo
戻り値
ただし、C#では
da.Fill 行で例外をキャッチします
OverflowException がユーザー コードによって処理されませんでした。
算術演算でオーバーフローが発生しました。
SQLPlus では問題なく動作するのに、C# では失敗するのはなぜですか? :S
c# - 負の配列サイズでスローされたOverflowExceptionの背後にある理論的根拠?
次のように要約できるコードを記述した後:
OverflowExceptionがスローされたことに驚きました。OverflowException状態のドキュメント:
負のサイズと配列の長さを指定すると、この例外の説明にどのように適合するかがわかりませんでした。少し深く掘り下げて、これが実際に指定された動作であることがわかりました。
寸法長の計算値は、次のように検証されます。1つ以上の値がゼロ未満の場合、System.OverflowExceptionがスローされ、それ以上のステップは実行されません。
なぜOverflowExceptionが選ばれたのだろうか。あなたが私に尋ねるなら、それはかなり誤解を招きます。それは私に少なくとも5分の調査を要しました(ここで私の考えを数えません)。誰かがこの(私の考えでは)独特の設計決定に光を当てることができますか?
c# - 2 つの System.Runtime.InteropServices.ComTypes.FILETIME オブジェクトを減算する最も安全な方法は何ですか?
System.Runtime.InteropServices.ComTypes.FILETIME
2 つのオブジェクトを減算する最も安全な方法は何だろうか? 次のコードを使用しましたが、下位 32 ビット値の負の数が原因で ArithmaticOverflow 例外が発生することがあります。体を囲むunchecked
ことが目的に役立つかどうかはわかりません。実行時例外や CS0675 警告メッセージを表示せずに安全に実行する方法について、いくつか提案をお願いします。
c# - 算術演算でオーバーフローが発生しました。(整数の加算)
このエラーを理解できません:
このメソッド SetVolume の呼び出しでは、ボリューム= 2055786000 およびサイズ= 93552000 です。ご覧のとおり、ボリュームは整数プロパティであり、サイズも整数です。
このクラスは dbml エンティティ クラスの部分クラスですが、このボリューム プロパティはデータベース内の列ではなく、「ビジネス オブジェクト プロパティ」として部分クラスにのみ存在します。
詳細を見る:
Data > Item : インデックス付きプロパティを評価するには、プロパティを修飾する必要があり、ユーザーが引数を明示的に指定する必要があります。
何が原因でしょうか...?
c# - 指数 0 値の 10 進解析 (0+E3)
中間層はシリアル化されたオブジェクトを送信し、サーバー上の Java での数学演算のために 0 が 0E+3 として送信されることがあります。オブジェクトを逆シリアル化すると、XmlException --> System.OverflowException が発生します。これは、値が 10 進数に対して大きすぎるか小さすぎるためです。
decimal.Parse がこの変換を処理できないのはなぜですか?
このような数字からクライアントを保護する方法はありますか?