Bonjour à tous,
je programme en C sur un micro-contrôleur. Mon souci, c'est qu'il n'y a pas de bibliothèque pour afficher des variables via liaison série. Du coup, je suis obligé d'utiliser la fonction sprintf et de mettre ça dans un buffer, puis d'envoyer le buffer via la liaison :
Mon souci, c'est que je voudrais afficher une variable de type double à virgule, sauf que la fonction sprintf fonctionne qu'avec des int. Je me suis dit pas pas problème j'affiche ma variable castée en int puis, ensuite, j'affiche ma variable moins ma variable castée en int pour récupérer l’après virgule, puis je la multiplie par 100:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sprintf(buf, "%d\n\r",ma_variable) ; UART_1_PutString(buf);
Mais je ne comprends pas : ça ne marche, quand j'ai un nombre négatif j'obtiens deux nombres négatif du style -5,-7
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 double Var; sprintf(buf, "%d\t%d\n\r",(int)Var,((Var-(int)Var)*100)) ; UART_1_PutString(buf);
Or, si j'essaye ma technique avec un nombre négatif ça marche :
Exemple:
Mais quand je le programme ça ne marche pas ça renvoie 0 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Var=-56,78 (abs(-56,78-(-56)))*100
Mon code, errPitch est un double, et vir c'est mon int qui contient les nombres après la virgule :
Merci les gars.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 vir=(int)(abs(errPitch-((int)errPitch)))*100; sprintf(buf, "%d,%d\n\r",(int)errPitch,vir ) ; UART_1_PutString(buf);
Partager