2009-04-27 8 views
0

Wahrscheinlich eine wirklich einfache Frage, halten Sie bitte keine Antworten leicht Ich bin noch recht neu auf, dies zu verstehen:Dezimalstellen und Pow-Funktion in C++

Ich bin ein wenig app zu machen, und ich brauche zu verwenden Kräfte für ein paar Berechnungen. Nach ein wenig Recherche fand ich die Pow-Funktion in cmath und hatte ein Spiel. Am Ende kam ich mit diesem snipped auf, die funktionieren:

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

int main() 
{ 
    float dummy2, test(6.65); 
    dummy2 = (float) pow((float) 3.57, test); 
    cout << dummy2; 

    return 0; 
} 

und es gibt die richtige Antwort (4734,17), aber nur auf zwei Dezimalstellen. Ich möchte vorzugsweise 5 Dezimalstellen.

Was habe ich hier falsch gemacht? Benutze ich den falschen Datentyp (floats)? Oder ist es eine Grenze von was auch immer in der Pow-Funktion ist, nur 2dp zu verwenden?

Ich könnte, wenn es dazu kam, nur Konstanten mit den Werten definieren, die ich will, da es nur 4 oder 5 Summen sein wird, brauche ich diese Präzision an, aber wenn es möglich ist, das Programm zu berechnen, würde dies tun sei großartig.

Danke

+0

Google ist dein Freund. [Diese Ergebnisse] (http://www.google.com/search?q=cout+decimal+places) und [auch diese] (http://www.google.com/search?q=cout+float+) Präzision) haben, was Sie wollen, nämlich dass Sie setprecision() als Cout-Parameter verwenden müssen. –

Antwort

3

Für eine bessere Präzision sollten Sie doppelt verwenden. Doppel hat 15 Stellen der Genauigkeit gegen 7 für Schwimmer.

+0

15 und 7 Dezimalstellen sind nur grobe Werte. Insbesondere 7 für Schwimmer kann ein wenig optimistisch sein ... – dmckee

6

Ich würde tun, wie Fbinder sagt, und verwenden Sie Doubles für größere Präzision. Um Ihr Problem zu lösen, haben Sie zwei Optionen, C-style und C++ style.

C-Style

#include <cstdio> 
printf("%.5f", dummy2); 

C++ Stil

#include <iomanip> 
std::cout << setprecision(5) << dummy2 << std::endl; 

ODER

std::cout.precision(5); 
std::cout << dummy2 << std::endl; 
// continue to use cout to output 5 decimal places 
Verwandte Themen