Cout long double issue

前端 未结 4 1610
一向
一向 2021-01-14 06:01

So, I\'m working on a C++ project. I have a var of long double type and assigned it a value like \"1.02\"

Then, I try to use cout to print it and the result is: -0

相关标签:
4条回答
  • 2021-01-14 06:28

    I see nothing wrong at all in the code. I just put it into a standard format and it works. Here is the code assuming what you posted is the entire thing.

    #include <iostream>
    
    using namespace std;
    
    int main(){
        long double var = 1.0202;
        cout.precision(5);
        cout << var << endl;
    }
    

    I hope this answers your question.

    Edit: P.S. Shorter, the better, so I have a better solution (opinionated).

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main(){
        long double var = 1.0202;
        //cout.precision(5);
        cout << setprecision(5) << var << endl;
    }
    

    I think this one is better since it is shorter. I would also recommend using printf if you are doing more complex decimal stuff since printf can choose which variables (if you have multiple) have decimals or how much.

    0 讨论(0)
  • 2021-01-14 06:37

    It seems to be a problem with compiler. Take a look here: http://mingw.5.n7.nabble.com/Strange-behaviour-of-gcc-4-8-1-with-long-double-td32949.html

    Use printf or convert a value of your variable to double before passing to cout. (BTW are sure you need 80-bit precision?)

    0 讨论(0)
  • 2021-01-14 06:43

    I just figured out the problem.. It was the include of cstdlib instead of iostream.

    0 讨论(0)
  • 2021-01-14 06:48

    This is an easier method, but your program worked on my compiler.

    #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;
    }
    

    I hope this helps you see that your compiler might actually have a problem.

    Source - > Link

    0 讨论(0)
提交回复
热议问题