ホームページ > バックエンド開発 > Golang > Go で int64 を int に安全に変換する方法: データ損失とオーバーフローを回避するには?

Go で int64 を int に安全に変換する方法: データ損失とオーバーフローを回避するには?

Mary-Kate Olsen
リリース: 2024-11-15 16:12:03
オリジナル
596 人が閲覧しました

How to Safely Convert int64 to int in Go: Avoiding Data Loss and Overflow?

Go での Int64 から Int への変換: エラーの防止

Go では、2 つの型を比較す​​るときに、int64 から int への変換が困難になることがあります。この記事では、予期しない結果を防ぐためのこの変換の推奨アプローチについて説明します。

より大きな型への変換

精度を確保するには、より小さな型を変換することをお勧めします (この場合、int) をより大きな型 (int64) に変換します。これは、型変換を使用して実現できます。

var a int
var b int64
int64(a) < b
ログイン後にコピー

切り捨ての問題

値を比較する場合、大きい型を小さい型に変換すると、データの損失または切り捨てが発生する可能性があります。次の例を考えてみましょう。

var x int32 = 0
var y int64 = math.MaxInt32 + 1 // y == 2147483648
if x < int32(y) {
    // This evaluates to false because int32(y) is -2147483648
}
ログイン後にコピー

このシナリオでは、int64(y) を int32 に変換すると -2147483648 となり、元の値の上位ビットが失われます。

最適化された変換maxInt

maxInt int64 値の場合は、次の変換の使用を検討してください。

for a := 2; a < int(maxInt); a++ {
    // Execute correctly even if maxInt exceeds the maximum value of int
}
ログイン後にコピー

maxInt を int に変換し、int() を使用して、正しい int サブタイプが確実に得られるようにします。

結論

型のサイズを慎重に考慮して int64 から int への変換を行うと、エラーが防止され、正確な比較が保証されます。 。小さい型を大きい型に変換するという原則に従うことで、開発者は Go でさまざまな数値型を扱うときにデータ損失を回避し、信頼性の高い結果を得ることができます。

以上がGo で int64 を int に安全に変換する方法: データ損失とオーバーフローを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート