Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
Original geschrieben von backdraft

Irgendwie hab ich ein Problem mit Kommazahlen!

Warum ist für C++ 100/239 = 0 (als float, oder double)

und nicht 0,4184100....??? :confused:

Verstehe ich irgendwie nicht.

backdraft

Versuch's mal mit:

100./239.

Ich glaub' ich hatte mal sowas ähnliches und mein Lehrer sagte, dass c++ ohne die Punkte mit int rechnet und dann auch nur ein int Ergebnis liefert.

Geschrieben

Ist doch klar: Standarddatentyp für Zahlen ist bei C++ INT.

Wenn ich irgendwelche Zahlen definiere ohne den Typ ganz klar anzugeben wird mit INTs gerechnet. Kommt dabei eine 0,...-Zahl raus und wird danach die Konvertierung zum Float durchgeführt kommt halt ein float von 0 raus. Um das zu kapieren sollte man sich genauer anschauen, wo der Unterschied (auf binärer Basis) zwischen einem Int und einem Float ist und warum man deshalb Datentypen immer am besten vorher eindeutig definiert. Will man sowas verhindern kann man sich ja auch eigene Datentypen definieren und diese kann man in der Verwendung ganz genau einschränken. C++ gibt dem Programmierer viel Macht über die Daten in die Hand (fast soviel wie Assembler). Man muß halt damit umgehen können und zu 100% dabei sein um solche Fehler nicht ins Programm einschleichen zu lassen. Deshalb finden ja alle C & C++ so kompliziert!


	float b=0,c=0,d=0;

	b=100/239;

	// ist natürlich 0 weil hier mit ints gerechnet wird!

	b=(float)100/239;

	// die Zahlen werden vorher zu int konvertiert -> das Ergebnis ist ok

	b=100./239.;

	// hier wird schon im Vorfeld jede Zahl zum double definiert

	// und der wird halt runtergecastet, deshalb ist es auch ok

	//solange das Ergebnis im Rahmen eines floats sein soll

	c=100;

	d=239;

	b=c/d;

	// jetzt sind alles floats und daher ist alles korrekt

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...