float in int

OP #3365391
Lesenswert?

Hi Leute!

ich habe ein Problem mit dieser zeile:

    k=(float)((delta_x/delta_y)*10);

für k,delta_x,delta_y sind integer

wenn nun delta_x=3 und delta_y=2
dann sollte doch k=15 sein da die restlichen kommastellen abgeschnitten 
werden aber bei mir ist k immer 10 aber warumm?

bzw. habt ihr einen anderen Lösungsvorschlag
Gast #3365392
Lesenswert?

ja kob schrieb:
> Hi Leute!
>
> ich habe ein Problem mit dieser zeile:
>
>     k=(float)((delta_x/delta_y)*10);
>
> für k,delta_x,delta_y sind integer
>
> wenn nun delta_x=3 und delta_y=2
> dann sollte doch k=15 sein da die restlichen kommastellen abgeschnitten
> werden aber bei mir ist k immer 10 aber warumm?
>
> bzw. habt ihr einen anderen Lösungsvorschlag

Wenn delta_x und delta_y ganzzahling sind (irgendein int oder char), 
dann wird delta_x/delta_y als Ganzzahl berechnet. Das ergibt dann '1'.
Gast #3365500
Lesenswert?

ja kob schrieb:
> aber was könnt ich dann machen um die 1. Komastelle in k auch noch zu
> speichern?

????
Die wird doch sowieso gespeichert.

Ne, nicht ganz. float hat ca. 6. signifikante Dezimalstellen.
ab der 7. Stelle gehen dann die Informationen verloren.
Dezimalstellen, nicht Nachkommstellen 1000000000 + 1 kannst du mit float 
nicht mehr berechnen.  1000000000 +  100000000 dagegen schon.
Das gilt dann auch für 10000 + 0.00001

Also wenn du mit 10 Millionen rechnest, hast du keine sinnvollen 
Nachkommstellen mehr

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren