Bonjour à toutes et tous,
Je suis nouveau, et me suis mis au C tout récemment après 40 ans de VB... Merci de votre indulgence
Je veux afficher une variable float qui n'a qu'une seule décimale, en remplaçant la virgule par le caractère degré (°).
Par exemple : 16,4 par 16°4.
Le caractère degré n'existant pas en code acii j'utilise le caractère ascii étendu 167.
J'utilise CodeBlock sur la console de Windows
Code:float U ; int D ; U = 16.4 ; // Valeur de température au dixième de degré D = (U*10) - ((int) U*10) ; // Extraction de la décimale printf("%.0f%c%d", U, 167, D) ; // Affichage en console Windows
Avec la valeur 16.4, le résultat affiché est correct
MAIS...
Il est faux pour U<0 et si la décimale est >=5 en valeur absolue...
J'ai donc "bidouillé" un peu ...
Là, ça fonctionne... mais ça n'est pas très beau comme code !Code:float U ; int D ; U = -0.6 ; D = (U*10) - ((int) U*10) ; printf("%.0f%c%d \n", U, 167, D) ; if (U == 0) // Si Valeur Nulle...' { D = (U*10) -((int)U * 10) ; // Reprise de la valeur decimale pour mesure nulle printf("%d%c%d \n", (int)U, 167, D) ; // Tp = 0 degre (1 decimale) } else if (U >0) // Si Valeur Positive... { D = (U*10) -((int)U * 10) ; // Reprise de la valeur decimale pour mesure Positive if (U != 0 && U >=1) // CONDITION 1 : valeur Tp positive > 1 degre { if (D>4) // Si Valeur Decimale > 4 ... { U = U - 1 ; // Corrige d'une unite...! } printf("%.0f%c%d n", U, 167, D) ; // Tp Positive > 1 degre (1 decimale) } else // CONDITION 2 : valeur Tp positive < 1 { printf("%d%c%d \n", (int)U, 167, D) ; // Tp Positive < 1 degre (1 decimale) } } else if (U <0) // Si valeur Negative { D = -((U*10) -((int)U * 10)) ; // Reprise de la valeur decimale pour Tp Negative if (U != 0 && U <=-1) // CONDITION 1 : Valeur négative < -1 degre { if (D>4) // Si Valeur Decimale > 4 ... { U = U + 1 ; // Corrige d'une unite...! } printf("%.0f%c%d \n", U, 167, D) ; // Tp Negative < -1 degre (1 decimale) } else { printf("-0%c%d \n", 167, D) ; // Tp Négative > - 1 degre (1 decimale) } }
Une idée pour le simplifier , voire l'améliorer ?
Commentaires et aide bienvenus.
Merci
-----