2017-03-14 5 views
0

Hier ist mein Code, nur ein grundlegendes Testprogramm, um eine Zahl mit Fließkommazahl zu drucken, mit printf funktioniert es großartig (ich denke, weil das Format explizit übergeben wird), aber mit std::cout kann ich nicht bekomme es richtig und std::setprecision scheint nicht zu helfen, können Sie mir bitte eine Hand geben?Drucken Sie einfach doppelten Wert mit Präzision

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    std::cout << double(1999999900)/10000 << std::endl; 
    std::cout << std::setprecision(5) << double(1999999900)/10000 << std::endl; 
    printf("%f\n", double(1999999900)/10000); 
    return 0; 
} 

Hier ist der Ausgang, wie kann ich 199.999,99 aus dem std::cout Druck auch?

[[email protected] test00]# g++ -std=c++11 test1.cpp -o test1; ./test1 
200000 
2e+05 
199999.990000 
+1

Experiment mit den [Gleitkomma- I/O-Manipulatoren] (http://en.cppreference.com/w/cpp/io/manip/fixed). –

+0

In einer nicht verwandten Anmerkung, brauchen Sie diese Umwandlung nicht zu "verdoppeln", verwenden Sie einfach eine Gleitkommazahl wie '1999999900.0'. –

Antwort

2

Verwenden

std::cout << std::setprecision(5) << std::fixed << double(1999999900)/10000 << std::endl; 
Verwandte Themen