Go で float64 値を int に変換すると、浮動小数点精度の制限により、予期しない結果が発生する可能性があります。これらの制限を理解することが、エラーを回避するための鍵です。
浮動小数点表現
コンピュータは、IEEE-754 標準を使用して float64 数値を格納します。この 2 進数表現には限られた数のビット (この場合は 64) が含まれており、すべての 10 進数を正確に表現できるわけではありません。 100.55 のような 10 進浮動小数点を float64 に変換すると、結果は元の値と若干異なる近似値になります。
例: 浮動小数点精度の問題
次のコード スニペットは、この問題を示しています。
package main import "fmt" func main() { x := 100.55 fmt.Println(x - float64(int(x))) // Output: 0.5499999999999972 }
出力に示されているように、元の float64 値から float64(int(x)) を減算すると、予想される 0.55 ではなく 0.5499999999999972 が得られます。この違いは、float64 形式の 100.55 が元の値とはわずかに異なるバイナリ近似であるために発生します。
浮動小数点エラーの回避
次の場合に浮動小数点エラーを回避するにはfloat64 を int に変換するには、次のことを考慮してください。アプローチ:
結論
浮動小数点精度の制限を理解し、適切な手法を利用することで、開発者は次のことが可能になります。エラーを最小限に抑え、必要なレベルの精度を維持しながら、Go で float64 値を int に効果的に変換します。
以上が浮動小数点の精度の問題を考慮して、Go で float64 を int に安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。