2016-06-20 5 views
-4
#include <iostream> 
#include <cstdio> 
using namespace std; 

int main() { 
    long long a,b,c; 
    char d; 
    double e,f; 
    cin>>a>>b>>c>>d>>e>>f; 
    cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d<<"\n"<<e<<"\n"<<f; 
    return 0; 
} 

input:Dought erschienen in C++ Basis-Datentypen

3 444 12345678912345 a 334.23 14049.30493 

output:

3 444 12345678912345 a 334.23 14049.30493 

Erfolgreich excecuted .... Aber

Input:

211916801 452082285 97592151379235457 p 19856.992 -5279235.721231465 

Ausgabe:

ist kam nicht perfekt ...... so im verwirrt einige bitte diese Ausgabe wie folgt erklären me..why passiert ......

geben suggesstion dies zu lösen

+0

* "ist nicht perfekt" * - Was bekommen Sie und was haben Sie erwartet? – Holt

+0

Fügen Sie 'cout.precision (X);' hinzu, wobei 'X' die gewünschte Genauigkeit ist. – Arunmu

+0

Ich brauche eine Ausgabe genau so wie als Eingabe ..... – Manikandan

Antwort

1

Sie müssen bedenken, dass es viele verschiedene Möglichkeiten gibt, numerische Variablen, insbesondere Gleitkommazahlen, darzustellen. Die Eingabe/Ausgabe-Streams haben einige Standardoptionen hinsichtlich Präzision und wissenschaftlicher/fester Formatierung.

Also, in Ihrem Fall, ich denke, Sie erwartet, dass die Zahlen im exakt gleichen Format gedruckt werden, dass Sie sie eingegeben haben. Stattdessen haben Sie wahrscheinlich das erste Ihrer beiden Doubles als 19857 und das zweite als -5.27924e+06 gedruckt. Du dachtest also, die Zahlen wären nicht richtig geparst.

Der Grund, warum Sie diese Werte erhalten haben, ist, dass der Standardwert precision für Gleitkommazahlen auf 6 gesetzt ist und der Standardwert formatting Ihre erste Zahl in fester und Ihre zweite in wissenschaftlicher Notation gedruckt hat.

Um das Standardverhalten zu ändern, können Sie diese beiden Optionen ändern, z. durch einen Aufruf manipulator

cout << setprecision(3) << fixed << e; 
cout << setprecision(10) << fixed << f; 

Beachten Sie, dass Sie #include <iomanip> für den zusätzlichen Manipulator haben setprecision. Alternativ können Sie cout.precision(3) vor dem Drucken e und cout.precision(10) vor dem Drucken f setzen.

Verwandte Themen