Je la programmation d'un microcontrôleur en C et étant donné que le compilateur ou puce ne gère pas les nombres à virgule flottante très bien, il est recommandé à l'échelle de la valeur suffisante de virgule flottante à se débarrasser de la virgule décimale, puis lors de la sortie du numéro, redimensionner avec une division proportionnelle et utiliser le module pour trouver et afficher la partie fractionnaire. Voici un exemple: Commencez avec le numéro 25.0625
. Multiplier par 10000
pour obtenir 250625
. Bon maintenant nous n'avons plus de flotteur. Maintenant, pour afficher ce que nous utilisons une ligne comme celle-ci:Programmation en C: Module ignore-t-il les zéros en tête dans le résultat? Comment puis-je l'arrêter?
sprintf(buffer, "%li.%i", Temp/10000, abs(Temp % 10000));
Nous avons donc d'abord obtenir le 25
par / 10000
retour, nous obtenons la 0625
par % 10000
. Voici le problème: il semble que mon résultat de module ignore le zéro de 0625, donc quand il concatène le numéro ensemble, il devient 25.625
au lieu de 25.0625
. Je ne peux pas compter sur le fait qu'il y ait toujours un zéro, donc il ne suffit pas d'y ajouter un zéro, et d'autres fois il peut y avoir plusieurs zéros. Ma question est, comment puis-je supprimer le module d'exclure les zéros de tête? Merci.
zéros en tête n'existent pas numériquement; utilisez '% 04i' pour formater un entier de quatre chiffres. – Ryan
Les nombres n'ont pas de zéros, ce ne sont que des nombres. Vous pouvez utiliser le format '% 04d' pour l'imprimer avec 4 chiffres. – Barmar
BTW, 'sprintf (tampon,"% li.% I ", Temp/10000, abs (Temp% 10000));' est certainement faux sortie avec 'Temp = -123'. – chux