Typumwandlung float/int
-
Hallo,
ich habe ein Problem mit der Typumwandlung von int und float.zunächst habe ich deklariert und initialisiert:
int k=7, i=2;
float= h;h=k/7;
cout << h << endl;eigentlich würde ich nun das Ergebnis 3.0 erwarten, da h ja als float deklariert ist. stattdessen bekomme ich das Ergebnis ohne nachkommastelle: 3
Liegt es vielleicht daran, dass die biblothek automatisch rundet?danke
-
Welchen Compiler benutzt du, bei dem 7/7 = 3 ist?
-
Entschuldigung, habe mich vorhin verschrieben. hier. meine frage ist weiterhin, warum ist das ergebnis nicht 3.0?
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <iomanip>using namespace std;
int main ()
{
int i=2, k=7;
float h;h=k/i;
cout << h<< endl;system("Pause");
return (0);
}
-
wenn du 3.0 dort stehen haben willst, dann musst du das hier lesen: http://www.cplusplus.com/reference/iomanip/setprecision/ bzw. http://www.cplusplus.com/reference/ios/fixed/
-
Felix4 schrieb:
warum ist das ergebnis nicht 3.0?
Weil die Leute, die die Standard-Library entwickelt/definiert haben, sich dafür entschieden haben per Default keine unnötigen Kommastellen bei der Ausgabe von floats/doubles auszugeben.
Natürlich gibt es diesbezüglich - wie fast überall - gute Argumente dafür und dagegen. Aber jetzt ist es halt mal so. Und du kannst ja jederzeit explizit das andere Format anfordern wenn du es brauchst - siehe Beitrag von Shade.