-6

私は辞書を使っていくつかのテストに取り組んでいました。これを行うために、データベースから必要な Float64 値をコピーしてテスト構造体配列に貼り付ける形式で出力しましたが、テストが失敗したときに値が異なることに気付きましたが、のみによって0.0000000000002

次に、値を確認するために、ループで次のように記述しました。

fmt.Printf("%f\n",value)
fmt.Println(value)

そして、次の値が返されました。

702.200000
702.1999999999998
5683.090000
5683.089999999998
975.300000
975.3

ドキュメントを確認したところ、Float64 に特別な表記法があること、または %f が Float32 の Float64 を置き換えることを示すものは何も見られませんでしたが、%vorを使用しても問題は発生せず、適切な場合に%g使用することがドキュメントで指定されています。%f.

どちらかを使用して12の精度を指定しても問題はありませんが%.12f、ドキュメントではデフォルトの精度が指定されていません。

なぜこれが起こるのですか?

編集: これは複製と同じ問題ですが、Adrien の説明がより詳細であると思います。

4

1 に答える 1