2017-02-17 4 views
0

Ich machte ein Programm, das zuerst 2 Zahlen (mit Float-Datentyp) vom Benutzer nimmt und dann den Benutzer fragt, bis zu welcher Ziffer er die Nummer geteilt bekommen soll und teilt sie schließlich bis zu dieser Nummer und "cout < <" es. Es hat kompiliert, aber es hat nicht funktioniert - bis zur Marke, als ich 22/7 berechnete, was ein irrationales Nein ist. bis zu 100 Ziffern berechnet es bis zu 30 oder 40 Ziffern und dann wurde Rest von Nullen aufgefüllt. Etwas wie folgt aus: 3.1428570747375488281250000000000000000000000000000000000000000000000000000000000000000000000000000000setprecision() funktioniert nicht wie erwartet

Hier ist mein Code:

#include <iostream> 
#include <cstdlib> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    system("clear"); 
    float y; 
    int z; 
    float x; 
    float a; 
    cout << "\nHello User\n"; 
    cout << "\nEnter first num to be divided: "; 
    cin >> x; 
    cout << "\nCool!! Now enter the 2nd number: \n"; 
    cin >> y; 
    cout << "\Exelent!! Enter the place upto which u wanna caculate: "; 
    cin >> z; 
    a = x/y; 
    cout << fixed << showpoint; 
    cout << setprecision(z); 
    cout << "Calculating......\n" << a << endl; 
    return 0; 
} 
+0

Alle Zahlen mit 6 oder weniger signifikanten Dezimalziffern können ohne Genauigkeitsverlust in einen Gleitkommawert nach IEEE 754 konvertiert werden. Informieren Sie sich über IEEE-Gleitkommatypen. –

+1

22/7 ist definitiv keine irrationale Zahl. – molbdnilo

+0

oh ich meine PI @molbdnilo – ShivamProgramer

Antwort

3

Gleitkomma-Typen haben gewisse Präzision. Sie erhalten keine genauen Ergebnisse, wenn Sie mit Floats (oder Doppel) arbeiten. Um nun eine bessere Präzision zu erhalten, verwenden Sie double anstelle von float (Weitere Informationen finden Sie unter this post).

Sie könnten #include <limits>, entfernen Sie den Schritt, dass die Genauigkeit von der Eingabe erhält und den Code ändern:

std::cout << std::setprecision(std::numeric_limits<float>::max_digits10);

das Ergebnis mit maximaler Präzision angezeigt werden Sie für den Typ verwenden.

Verwandte Themen