問題タブ [gofmt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - fmt.Printf("%f\n",x) は Float64 を Float32 に丸めますが、fmt.Println(x) は丸めません
私は辞書を使っていくつかのテストに取り組んでいました。これを行うために、データベースから必要な Float64 値をコピーしてテスト構造体配列に貼り付ける形式で出力しましたが、テストが失敗したときに値が異なることに気付きましたが、のみによって0.0000000000002
次に、値を確認するために、ループで次のように記述しました。
そして、次の値が返されました。
ドキュメントを確認したところ、Float64 に特別な表記法があること、または %f が Float32 の Float64 を置き換えることを示すものは何も見られませんでしたが、%v
orを使用しても問題は発生せず、適切な場合に%g
使用することがドキュメントで指定されています。%f
.
どちらかを使用して12の精度を指定しても問題はありませんが%.12f
、ドキュメントではデフォルトの精度が指定されていません。
なぜこれが起こるのですか?
編集: これは複製と同じ問題ですが、Adrien の説明がより詳細であると思います。