Wieso erhalte ich nach Division nur ganze Zahlen ?
-
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;int main ()
{
float phi;
phi= 39 / 10;
cout << phi;
}Wieso erhalte ich nach der Division für Phi nur den Wert 3 und nicht 3.9???
mfG Tutti
-
Weil Float für Ganzzahlen da ist. Versuchs mit Double.
-
Mit double kommt das Gleiche!!!!
-
integer durch integer teilen = integer
float durch float teilen = float
39**.0f** / 10**.0f** = 3.9f
-
Us0R schrieb:
Weil Float für Ganzzahlen da ist. Versuchs mit Double.
Nope.
@Tutti: Das liegt daran, dass der Divisions-Operator anhand seiner Operanden entscheidet welche Art der Division er durchführt. Sind beide Operanden ganzzahlig wird eine Ganzzahlendivision ausgeführt, ist einer der Operanden dagegen eine Gleitpunktzahl wird eine Gleitpunktdivision ausgeführt.
Also: entweder du schreibst
phi = (float) 39 / 10;
oder
phi = 39; phi /= 10;
oder
phi = 39.0 / 10;
/edit: Zu spät...
Caipi
-
Hab grade auch ein Bissel nach gedacht und mich dran erinert das Float auch eine Kommavariable ist. Das nächste mal denke ich zu erst nach
:p
-
Us0R schrieb:
Weil Float für Ganzzahlen da ist. Versuchs mit Double.
Herr Gott... ***** ****** ******* ****
-
Caipi schrieb:
phi = (float) 39 / 10;
da kommen immernoch nur ganzzahlen raus...
phi = float(39) / 10;
-
otze das würde ja bedeuten das division vor cast geht?
-
otze schrieb:
Caipi schrieb:
phi = (float) 39 / 10;
da kommen immernoch nur ganzzahlen raus...
phi = float(39) / 10;
Ganz sicher? Demnach dürften g++ und der Borland Compiler 5.0x ja in dieser Hinsicht nicht 'Standard-konform' sein...
Caipi
-
ok, habt recht, hab mich falsch an nen andren thread erinnert...
ps: der BCB war und wird nie stadardkonform sein, was der alles compiled