2

「2.1648797E -05」のような文字列があり、「0.00021648797」に変換するためにフォーマットする必要があります

この変換を行うための解決策はありますか

4

5 に答える 5

2

使ってみdoubleたりlong long

cout << setiosflags(ios::fixed) << thefloat << endl;

浮動小数点の重要な特性は、大きな値の場合、小数点以下のすべての有効数字に関連付けられた精度がないことです。「科学的な」表示は、固有の内部ストレージの現実を合理的に反映しています。

于 2013-07-09T11:26:26.223 に答える
0

本当に文字列表現から文字列表現に移行するだけで、精度が非常に重要であるか、値が double の有効な範囲を離れる可能性がある場合は、double への変換を避けます。精度エラーや範囲の問題により、値が変更される場合があります。

簡単なテキストパーサーを書いてみてください。大まかに言うと、「E」までの小数点を省略して数字を読み取りますが、小数点位置は保存します。「E」の後に指数を数値として読み取り、それを保存した小数点位置に追加します。次に、最初または最後にゼロを追加し、小数点を挿入して、数字を再度出力します。

于 2013-07-09T11:46:27.560 に答える
0

では、最初に数値を出力し、次に double として読み取ってから、書式指定子を使用して出力し、数値の精度を 12 桁に設定することC++ができます。固定精度で 10 進数を出力する方法については、このstd::stringstream質問をご覧ください。

于 2013-07-09T11:24:16.933 に答える