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
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'.
In C# könntest du das machen...
1 | int delta_x = 3; |
2 | int delta_y = 2; |
3 | |
4 | float k = (float)delta_x / delta_y * 10; |
MfG Sven
Danke! aber was könnt ich dann machen um die 1. Komastelle in k auch noch zu speichern? @Sven W. ich bin in C unterwegs! ;)
:
Bearbeitet durch User
FAQ: Datentypen in Operationen Du könntest alternativ auch ein C Buch lesen. Da steht das alles drinnen. Und noch 1000 andere Dinge, die du eigentlich wissen solltest, wenn du ein C-Programm schreiben willst.
:
Bearbeitet durch User
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
Das ist nicht nur c#, sonden c[#|++]?, Java, ...
1 | int delta_x = 3; |
2 | int delta_y = 2; |
3 | |
4 | float k = delta_x / (delta_y * 10.0); |
Und rechnet wie gewünscht.
hi ja kob wenn Du im Integer-Universum bleiben willst, rechnest Du am besten: int k = 10 * delta_x / delta_y;
@eddi current! danke dies lösung hab ich jetzt auch mitlerweile gefunden aber danke!^^
Bastler schrieb: > float k = delta_x / (delta_y * 10.0);Und rechnet wie gewünscht. das ergibt aber nicht das gleich wie k=(float)((delta_x/delta_y)*10); , selbst wenn alle Variablen float sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.