in c++ int in double konvertieren?
|
|
|
| Autor |
Nachricht |
physik-player Full Member

Anmeldungsdatum: 10.01.2011 Beiträge: 93
|
Verfasst am: 08 Jul 2011 - 00:03:14 Titel: in c++ int in double konvertieren? |
|
|
hallo leute,
ich bin schon so richtig am verzweifeln. dieses verdammte c++ handelt so unlogisch. laut meinem handbuch ist es möglich zwei int-werte zu dividieren und den quotient als double-wert(also mit nachkommastellen) ausgeben zu lassen. genau das klappt aber nicht, der compiler gibt nur die stelle vor dem komma aus, mehr nicht
hier mein programm:
#include <iostream>
using namespace std;
int main()
{
int i1,i2,error; // zur bedeutung von error siehe weiter unten
double ie;
cout<<endl;
cout<<"Geben Sie die erste Zahl ein: ";
cin>>i1;
cout<<"Geben Sie die zweite Zahl ein :";
cin>>i2;
ie=i1/i2;
cout<<endl;
cout<<"Quotient: "<<ie<<endl<<endl;
cin>>error; // aus irgendeinem Grund hat cin.get() keine Wirkung, weshalb ich dem programm vorgaukeln muss, dass ich noch etwas eingeben will, damit es sich nicht schließt.
cin.get();
return 0;
}
so, und wenn ich als erstes 13 und als zweites 5 eingeben, sollte doch wohl 2.6 ausgegeben werden, nicht wahr? genau das geschieht jedoch nicht. es erscheint nur eine 2. unlogischerweise ist die konvertierung von double zu int kein problem:/
setze ich jedoch i1 oder i2 in einen double wert, so wird auch ein double wert ausgegeben, obohl ich dennoch 5 und nicht etwa 5.0 eintippe.
bitte helft mir, dieses verdammte programm treibt mich noch in den wahnsinn
übrigens verwende ich c++ visual studio 2008
für jede hilfe 1000 dank
physik-player |
|
 |
just_phil Senior Member

Anmeldungsdatum: 23.08.2008 Beiträge: 768
|
Verfasst am: 08 Jul 2011 - 10:25:17 Titel: |
|
|
Hallo,
das ist ganz normal. Wie Du HIER sehen kannst, wird bei einer Operation mit zwei Integern auch das Ergebnis ein Integer sein. Nun weist Du Deinen Integer-Wert einer Double-Variablen zu, wobei sich aber die Genauigkeit des schon berechneten Ausdrucks (ohne Nachkommaanteil) nicht plötzlich erhöht. Die Double-Variable kann zwar alle anderen primitiven Zahlentypen aufnehmen, das Ausgangsmaterial legst Du aber bei der Berechnung selbst, also auf der rechten Seite der Zuweisung, fest. Und da die Integer-Division 13/5 den Nachkommaanteil gar nicht berücksichtigt, ist diese Information quasi schon "verloren".
Wie Du selbst schon bemerkt hast, müsstest Du für Dein gewünschtes Ergebnis entweder eine Deiner Variablentypen anpassen oder eben ein Casting durchführen. |
|
 |
physik-player Full Member

Anmeldungsdatum: 10.01.2011 Beiträge: 93
|
Verfasst am: 08 Jul 2011 - 12:44:59 Titel: |
|
|
wow danke, so eine schnelle und gute antwort hab ich nicht erwartet
jetzt hab ichs endlich gerafft nun sind auch andere probleme gewischen
vielen dank nochmal DH  |
|
 |
Summse Newbie

Anmeldungsdatum: 06.06.2009 Beiträge: 6
|
Verfasst am: 17 Jan 2012 - 03:15:21 Titel: |
|
|
Hallo,
wenn du verhindern möchtest, dass dein Fenster am Ende der Ausführung schließt:
system("pause"); |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|