Je ne comprends pas pourquoi mon programme faire ces calculs:calcul étrange
#define PixelsPerMeter 40.0
// 40 pixels ~ 1 meter
#define Meters2Pixels(meters) (float)meters*PixelsPerMeter
#define Pixels2Meters(pixels) (float)pixels/PixelsPerMeter
// The speed of free falling
#define G Meters2Pixels(9.81)
// ...
float mHeight = 768;
float _windPower = Meters2Pixels(-5.0);
// ...
float x1 = (mHeight/G) * _windPower;
cout << "G: " << G << "; wind: " << _windPower << "\n";
cout << "Height: " << mHeight << "\n";
cout << "Calculating: " << mHeight/G * _windPower << "\n";
=>
G: 392.4; wind: -200
Height: 768
Calculating: -626300
Je ne comprends pas pourquoi ... Si je Calculation par les mains, par exemple, je dois obtenir: -391.4
Qu'est-ce qui ne va pas?
Je vous recommande également d'inclure également les arguments de macro entre parenthèses, dans le cas où vous transmettez une valeur qui change la priorité de votre opérateur pour quelque chose d'indésirable. – mdec
Bonne réponse, merci. Oui, les macros sont mauvaises :) – Ockonal
Les macros ne sont pas mauvaises, mais je ne pense pas que ce soit un bon cas d'utilisation. – alternative