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
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 | |
2 | |
3 | |
4 | |
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! ;)
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.
Danke für deine hilfreiche Antwort! ;)
Gast
#3365500
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
Gast
#3365509
Das ist nicht nur c#, sonden c[#|++]?, Java, ...
1 | |
2 | |
3 | |
4 | |
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!^^
Gast
#3367018
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.
Bastler schrieb: > Und rechnet wie gewünscht. Eher weniger.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.