3

だから、私はC++プロジェクトに取り組んでいます。long double 型の var があり、「1.02」のような値を割り当てました

次に、 cout を使用して印刷しようとすると、結果は次のようになります: -0

私はすでに setprecision を使用しようとしましたが、問題をグーグルで見つけました。

これに対する解決策は何ですか?

コード例:

#include <cstdlib>
#include <iomanip>

using namespace std;

int main(int argc, char** argv)
{

    cout.precision(15);
    long double var = 1.2;
    cout << var << endl;
    return 0;
}

OS: Windows 8.1 64 ビット コンパイラ: minGW IDE: NetBeans 8.0.2

4

4 に答える 4

0

これは簡単な方法ですが、あなたのプログラムは私のコンパイラで動作しました。

#include <cstdlib>
#include <iomanip>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{

    std::setprecision(10);
    long double var = 1.023563457578;
    cout << var << endl;
    return 0;
}

これが、コンパイラに実際に問題がある可能性があることを理解するのに役立つことを願っています.

ソース - >リンク

于 2014-12-18T03:31:36.527 に答える
-1

コードには何も問題はありません。標準フォーマットに入れるだけで動作します。あなたが投稿したものが全体であると仮定したコードは次のとおりです。

#include <iostream>

using namespace std;

int main(){
    long double var = 1.0202;
    cout.precision(5);
    cout << var << endl;
}

これがあなたの質問に答えることを願っています。

編集:PS短いほど良いので、より良い解決策があります(意見があります)。

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    long double var = 1.0202;
    //cout.precision(5);
    cout << setprecision(5) << var << endl;
}

短いのでこちらの方が良いと思います。また、より複雑な小数処理を行う場合は、printf を使用することをお勧めします。なぜなら、printf は、小数を持つ変数 (複数ある場合) を選択できるからです。

于 2014-12-18T01:34:57.987 に答える
-3

私はちょうど問題を理解しました..それはiostreamの代わりにcstdlibのインクルードでした。

于 2014-12-18T01:38:11.983 に答える