Wie ausgabeformat von zahlen ändern?
-
hallo,
wie kann ich das ausgabeformat von zahlen in c++ ändern...mir gehts häuptsächlich darum das die zahlen nicht mit exponent dargestellt werden
(das hab ich oft bei 0en,die dann als3.34343 e-17 dargesetllt werden)
gabs da nicht irgendeinen befehl mit dem man die kommastellen begrenzen konnte?mfg
-
cout.setf(ios::fixed) zum Beispiel. Das schaltet die exponentschreibweise aus.
mit cout<<setprecision(5) begrenzt du dann noch auf 5 nachkommastellen.
-
danke für die hilfe...kann man das noch irgendwie so hinbiegen,das es bei ganzen zahlen keine kommastellen dranhängt?
mfg
-
Wenn diese „Ganzzahlen“ als double kommen prinzipbedingt nicht.
-
Braineater schrieb:
danke für die hilfe...kann man das noch irgendwie so hinbiegen,das es bei ganzen zahlen keine kommastellen dranhängt?
mfg
in c geht das so:
printf( "%.0f", dVar );
-
.filmor schrieb:
Wenn diese „Ganzzahlen“ als double kommen prinzipbedingt nicht.
.. sicher geht das. Einfach die Anzahl der Nachkommastellen auf 0 setzen. Etwa so:
cout << fixed << setprecision(0); // Gleitkommadarstellung; NK-Stellen=0 for( double d = 1./7; d < 100; d *= 7.1 ) cout << d << endl;
Obwohl hier mit 'krummen' double's hantiert wird, ist die Ausgabe
0 1 7 51
Gruß
Werner
-
Hallo
Dazu hätte ich auch mal noch eine Frage:
Wenn ich meine Float Zahl auf folgende weise ausgeben möchte:Edit11->Text=a[0];
habe ich auch das Problem das er mir wie viele Nachkommastellen oder in Exponentenschreibweise ausgibt.
Wie kann ich das begrenzen oder verhindern??Gruß
-
wurde doch oben gesagt, mit den entsprechenden manipulatoren. Schau mal auf cplusplus.com/reference unter streams -> manupulators
-
da hab ich jetzt das gefunden:
Stream manipulators
Manipulators are functions specifically designed to be used in conjunction with the insertion (<<) and extraction (>>) operators on stream objects, for example:
aber das benutze ich doch garnicht.
muss ich das denn nicht eher in der float.h oder so einstellen?
-
Doch. Das Problem liegt nicht beim
float
, sondern bei der Ausgabe des Streams. Um diese anzupassen, sind Manipulatoren das Richtige.Übrigens:
<float.h>
ist kein C++-Standardheader. Wenn du ihn überhaupt jemals brauchst, dann nimm<cfloat>
.
-
ok, soweit einleuchtend
http://www.cplusplus.com/reference/iostream/ios_base/setf.html
aber wenn ich dann sowas schreibe
cout.setf(ios::fixed)
bekomm ich ne Fehlermeldung.
wo gehört die zeile denn hin bzw ist das überhaupt richtig?
-
physikus schrieb:
bekomm ich ne Fehlermeldung.
Wie wäre es, wenn du uns die Fehlermeldung mitteilst? Wieso schreibt man die eigentlich nicht automatisch mit hin?
Grüssli
-
sorry
[C++ Fehler] Unit1.cpp(16): E2141 Fehler in der Deklarationssyntax
-
Dann tippe ich mal auf folgendes:
cout.setf(ios::fixed);
-> Semikolon vergessen ...
Grüssli
-
nein, das is es leider nicht.
-
Dann zeig mal den Kontext.
-
//--------------------------------------------------------------------------- #include <vcl.h> #include <math.h> #include <iostream> #pragma hdrstop #include "Unit1.h" #include "Project1.cpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; cout.setf(ios::fixed); #define PI 3.1415926535 #define ALPHA1 PI/2 #define ALPHA2 PI*7/6 . . .
-
Dachte ich mir, dass da was nicht stimmen kann. Anweisungen müssen innerhalb einer Funktion stehen.
-
Hi
das hab ich auch schon versuchtvoid __fastcall TForm1::Button1Click(TObject *Sender) { cout.setf(ios::fixed); . . .
aber dann kommt folgendes
[C++ Fehler] Unit1.cpp(63): E2451 Undefiniertes Symbol 'cout'
[C++ Fehler] Unit1.cpp(63): E2090 Qualifizierer 'ios' ist kein Name einer Klasse oder einer Struktur
[C++ Fehler] Unit1.cpp(63): E2121 ) fehlt beim Funktionsaufruf
-
Schreib mal
std::
vorcout
undios
. Der Header<iostream>
wurde vorher eingebunden?