簡體   English   中英

C++ 在復數中正確寫入和打印精度(cout)的問題?

[英]C++ problem with properly writing and printing precision (cout) in complex numbers?

我有個問題。 我嘗試使用 setprecision 正確打印,但我的結果仍然是錯誤的。 這是我的輸入 data.txt

(1.1,2) (1.7,3.14) 

這是我的 output 結果.txt

1.1,    2, 
0.7,    3.1, 

這是 output,我期待

1.10, 2.00
1.70, 3.14

這是我的代碼

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

using namespace std;

class Complex_num {
    double real, imag;
public:
    Complex_num(double r=0,double i=0){
    real=r;
    imag=i;
    }


    friend std::ostream& operator<<(std::ostream& os,  const Complex_num& c)
    {
        return os << c.real << ",    " << c.imag << setprecision(2) << ',' << ' '<<endl;
    }
    friend std::istream& operator>>(std::istream& is, Complex_num& cn){
        char c;
        return is>>c>>cn.real>>c>>cn.imag>>c>>c; 
    }
};


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

    char c;
    ifstream read(argv[1]);
    if (!read)
        { cerr << "Open error: " << argv[1] << endl; exit(1);}
    ofstream write(argv[2]);
    if(!write) { cerr << "Open error: " << argv[2] << endl; exit(2);}
    read.clear();
    read.seekg(0);
    Complex_num x1;
    read >> x1;
    write << x1;
    cout << x1;
    Complex_num x2;
    read >> x2;
    write << x2;
    cout << x2;

    return 0;
} 

為什么這不起作用,我使用設置精度,但不是 2.00,而是 2,而不是 3.14,我得到 3.1。 為什么?

setprecision默認影響打印的有效位數,而不是打印的小數位數。 為此,您必須切換到固定的 output 模式。 您還需要在 output 之前設置精度,而不是之后的數字。

return os << fixed << setprecision(2) << c.real << ",    " << c.imag << ',' << ' '<<endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM