浮動小数点演算では、異なる数値型間で変換するときにエラーが発生する可能性があります。 Go では、浮動小数点表現の制限により、float64 を int に変換すると予期しない結果が生じる可能性があります。
コンピュータは通常、数値データをバイナリ形式で保存します。ただし、100.55 のような 10 進数は、2 進法では有限数として表すことができません。
IEEE-754 は、Go が float64 値を表すために使用する標準です。数字の格納に 53 ビット、指数に 11 ビットを使用し、有限範囲の数値を許容しますが、必然的に近似が生じます。
100.55 のような 10 進数を 2 進数に変換する場合float64 の内部表現を正確に表現することはできません。代わりに、最も近い 2 進数が使用され、元の値とはわずかに異なる値になります。
コード例では、float64(int(x )) は 0.55 になるはずですが、出力は 0.5499999999999972 に近くなります。このエラーは、float64(int(x)) が 100.55 ではなく 100.0 を表し、同じ数値の 2 つの異なる表現間で減算が実行されるために発生します。
精度エラーを回避するには、次のアプローチを検討してください:
以上がGo で浮動小数点を整数に変換する際の浮動小数点エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。