0

文字列を最大 15 桁の精度で double に変換する必要があります

私は多くの記事や同様の質問を読みましたが、数値を画面に出力するときに setprecision(15) を使用することを提案しました。

例えば:

string line = "34.9438553";
double lon1 = strtod(line.c_str(),NULL);

私が書くなら

cout << lon1;

34.9438553 ではなく 34.9439 のみが出力されます。

私は書くことができた

cout << setprecision(15) << lon1;

それは機能しますが、変数を画面に出力するときだけでなく、変数内の数値全体が必要なため、変数 lon1 自体に 15 桁の精度が必要です。

誰もそれを行う方法を知っていますか?

4

1 に答える 1

5

setprecisiondouble の精度ではなく、出力される精度を設定します。strtoddouble または文字列 (この場合、文字列によって制限されます) で使用可能な精度の最小値まで double を読み取ります。

lon1つまり、 を使用することで、文字列の完全な精度が既に得られていますstrtod

于 2013-12-14T03:45:57.590 に答える