détection d'objet avec un magnétomètre

int xMag; 
int yMag; 
int zMag;

la valeur d'un int est limitée à la plage [ -32768, +32767 ].
Quand le compilateur voit le produit de 2 int ( xMag*xMag ), il place le résultat dans un int, et des fois, ça déborde !
Donc au minimum, il faut déclarer tes variables comme des long.

Maintenant, pour être cohérent avec le problème à résoudre, où xmag ymag et zmag sont des nombres réels, if faut encore mieux les déclarer comme des float.

Il est très courant que les débutants confondent le type d'une info avec sa représentation:

  • le type est réel pour une grandeur physique (une distance, une masse, une accéleration..) et entier pour un comptage ( le nombre d'enfants, la taille d'un texte...)
  • la représentation peur être un int, un long, un float, un bool, un double. C'est la cuisine interne du programme. Il faut choisir avec soin.