Gast
#1772834
Hi Leute, warum kommt bei folgender Rechnung "-1" und NICHT 0 raus?
1 | |
2 | |
3 | |
Taschenrechner und Excel zeigen -0,5. Ist das nicht 0 bei nem int16_t ???
|
Anzeige
|
Compiler rechnet falsch Oder ich!
Gast
#1772834
Hi Leute, warum kommt bei folgender Rechnung "-1" und NICHT 0 raus?
Taschenrechner und Excel zeigen -0,5. Ist das nicht 0 bei nem int16_t ???
Gast
#1772841
rundung ? :)
Gast
#1772857
Wenn ich das in den Taschenrechner eintippe (und vor allem die int-Division richtig mache), kommt auch -1 raus. Es gibt keine Nachkommastellen bei int, also schmeiß die beim nachrechnen sofort bei der Division raus! Und nicht erst damit weiter rechnen und am Ende rausstreichen. Merke: der Compiler hat immer* recht! *In 99,9999% der Fälle. Und die Fälle wo er nicht recht hat, sind dann meistens komplizierte, selten genutzte Spezialfälle der Sprache. Und, merke auch: Wer bei einfachen Bugs nach Compilierfehlern schreib, brandmarkt sich selber als Anfänger ;-)
Gast
#1772938
ich habs: int16_t res = ((int32_t) y * 1000 - (z * (int32_t)x + 1000/2)) /1000; :-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|