【解決方法】C# で int 64 値を long にプッシュする方法

プログラミングQA


Long 変数 = Convert.ToInt64(行[“SHP_ID”])
値が「33300109…….」の場合

例外を下回っています。

データ: {System.Collections.ListDictionaryInternal}
HResult: -2146233066
ヘルプリンク: null
内部例外: null
メッセージ: 「値が Int64 に対して大きすぎるか小さすぎます。」
出典:「mscorlib」
StackTrace: “System.Number.ParseInt64(String 値、NumberStyles オプション、NumberFormatInfo numfmt) で\r\n System.Int64.Parse(String s) で”
TargetSite: {Int64 ParseInt64(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)}

誰でも提案できますか

私が試したこと:

私はこれを試しましたが、まだ同じ例外があります。

Int64.Parse(行[“SHP_ID”].ToString())

解決策 1

見る Int64 構造体 (システム) | マイクロソフト ラーン[^] 上限と下限用。 あなたは使用することができます 10 進構造体 (システム) | マイクロソフト ラーン[^] タイプですが、この値で何をしようとしているかによって異なります。

解決策 2

エラーメッセージは、何が間違っているかを正確に示しています。

文字列「33300109396272646795」を INT64 数値に変換しようとしています。

値を比較すると
33300109396272646795

INT64 の最大値まで
9223372036854775807

ご覧のとおり、「33300109396272646795」
INT64 に変換できません。
大きすぎる!

見る Int64.MaxValue フィールド (システム) | マイクロソフト ラーン[^]

C# の数値型に関する次のドキュメントを読むこともお勧めします。
整数型 – C# リファレンス | マイクロソフト ラーン[^]

解決策は、ここで説明されているように、別の変換メソッド「Convert.ToUInt64」を使用することです。
Convert.ToUInt64 メソッド (システム) | マイクロソフト ラーン[^]

UInt64 は、0 から 18,446,744,073,709,551,615 までの値を保持できます。

コメント

タイトルとURLをコピーしました