# kleines Problem mit: Konvertierung von 'int' in 'float', moeglicher Datenverlust



## dika (27. November 2004)

Hallo,

habe volgendes Problem:

Der Compiler gibt eine Warnung aus , und das Programm arbeitet nicht richtig...
Warnmeldung: "warning C4244: '=' : Konvertierung von 'int' in 'float', moeglicher Datenverlust".

Obwohl ich die Varible "anteil" alsTyp float deklariert habe rechnet es die Nachkommastellen nicht aus, z.B. bei 16.67% stehen da nur 16.00 % an.

warum?  


```
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
 
main()
{
 
char text[50];
int gesamtanzahl, e_anzahl=0, i; 
float anteil;
 
 
printf("geben sie den text ein: ");
gets(text);
 
gesamtanzahl = strlen(text);
 
for(i = 0; i <= 50 ; i++)
{
if( text[i] == 'e')
{
e_anzahl ++;
}
}
 
printf("In diesem Text sind %3i 'e' Zeichen enthalten", e_anzahl);
anteil = e_anzahl *100 /gesamtanzahl;
printf("\n\nDer prozentuale Anteil betraegt %6.2f %%", anteil);
 
getch();
return(0);
}
```


----------



## RedWing (27. November 2004)

Hallo,



> ```
> anteil = e_anzahl *100 /gesamtanzahl;
> ```



anteil ist zwar ein float aber auf der Rechten Seite wird trotzdem eine Integer 
Division durchgeführt, und danach das Ergebnis( mit bgeschnittener Kommastelle
auf deine flaot Var zugewiesen...
Um das zu umgehen musst du mindestens ein Parameter des / Operanten 
zu einem Float kasten, der zweite wird dann implizit in einen Float gecastet 
und das Ergebniss ist eine ganz normale Division:


```
anteil = e_anzahl *100 /static_cast<float>(gesamtanzahl);
```

oder:


```
anteil = e_anzahl *100.0 /gesamtanzahl;
```
sollte auch gehen

Gruß

RedWing


----------



## Tobias K. (27. November 2004)

moin


Oder e_anzahl gleich mit als float deklarieren.


mfg
umbrasaxum


----------



## dika (27. November 2004)

@ Radwing  

Danke! habe das mit casts gewusst, dachte nur es muss auch so gehen(denkefehler).

@umbrasaxum  

wie meinst du das denn jetzt? 

wenn die variblen :       (gesamtanzahl,   e_anzahl=0,   anteil )
alle den typ float haben würden, müsste es doch gehen.....?


----------



## Tobias K. (27. November 2004)

moin


Bei mir gings nicht.
Kp warum.


mfg
umbrasaxum


----------

