Hallo zusammen,
ich habe hier ein kleines Verständnisproblem bei der Division zweier
vorzeichenbehafteter Integer Konstanten und der anschließenden
Multiplikation mit dem Faktor 2^12. Ich erhalte nur dann das korrekte
Ergebnis, wenn ich entweder a, oder b, oder beide Konstanten vor der
Division als float caste. Ich versteh einfach nicht, warum das so ist.
Wäre super, wenn mir hier wer auf die Sprünge helfen könnte.
Als Controller kommt ein Atmega32A zum einsatz.
1 | int a = 19186;
|
2 | int b = 17174;
|
3 | int c = 0;
|
4 |
|
5 | c = (int)(((float)a/b - 1)*4096); //geht
|
6 | c = (int)((a/b - 1)*4096); //geht nicht
|