Nombre de chiffres après la virgule

shamir

Membre enregistré
29 Juillet 2004
1
0
38
Salut,

je vien de m'acheter mon premier mac :) et je me suis dit que ça pourrait etre sympa de me mettre a la programmation.
J'en ai fait cette année sous Delphi (PC) avec mon école donc je connais quelque principe.

J'ai fait une petite application ki converti les degrés celsius en farenheit mais le problème c'est ke le résultat s'affiche avec je ne sai combien de chiffre après la virgule :(

Est ce ke qqun saurait comment limiter se nombre de chiffres?
 
En math cela se traduit par multiplier le résultat par 10 - en prendre la partie entière - et la diviser par 10 pour avoir le résultat final avec un chiffre après la virgule. Dans Excel on écrirait ceci = ENT(A1*10)/10 où la cellule A1 contient votre résultat de conversion avec n chiffres après la virgule. Si vous voulez le résultat avec deux chiffres après la virgule il faudrait entrer ceci dans Excel = ENT(A1*100)/100 et ainsi de suite.

Il ne vous reste qu'à transformer ceci dans votre langage de programmation. ;)
 
Si c'est du C/C++ et que vous désirez limiter le nombre de chiffre à l'affichage, il y a un flag dans printf qui fait trés bien le boulot :

Bloc de code:
printf ("temperature = %.2f", vartemp);

par exemple, spécifie que vous désirez afficher un float avec 2 décimal après la virgule.

%f : spécifie un float
%.xf : spécifie un float avec x décimal aprés la virgule

Il y a d'autres flags équivalents pour tout autre format.
 
klog a dit:
Si c'est du C/C++ et que vous désirez limiter le nombre de chiffre à l'affichage, il y a un flag dans printf qui fait trés bien le boulot :

Bloc de code:
printf ("temperature = %.2f", vartemp);

par exemple, spécifie que vous désirez afficher un float avec 2 décimal après la virgule.

%f : spécifie un float
%.xf : spécifie un float avec x décimal aprés la virgule

Il y a d'autres flags équivalents pour tout autre format.

#include <math.h>

:D
 
  • J’aime
Réactions: tantoillane
klog a dit:
Si c'est du C/C++ et que vous désirez limiter le nombre de chiffre à l'affichage, il y a un flag dans printf qui fait trés bien le boulot :

Bloc de code:
printf ("temperature = %.2f", vartemp);

par exemple, spécifie que vous désirez afficher un float avec 2 décimal après la virgule.

%f : spécifie un float
%.xf : spécifie un float avec x décimal aprés la virgule

Il y a d'autres flags équivalents pour tout autre format.

Et si on veut pas afficher des zéro inutiles en après la virgule, comment fait-on?

par exemple, je veux que 10,0100 s'affiche 10.01 que 10,1000 s'affiche 10.1 et 10.0000 s'affiche 10
 
citron a dit:
Et si on veut pas afficher des zéro inutiles en après la virgule, comment fait-on?

par exemple, je veux que 10,0100 s'affiche 10.01 que 10,1000 s'affiche 10.1 et 10.0000 s'affiche 10


Par exemple,

char str[255];

sprintf(str,"%f",value);
while(str[strlen(str)-1]=='0') str[strlen(str)-1]=0;
printf(str)

Ecrit comme ca à la volée , non testé ;)

Cordialement
 
Sinon si tu es comme moi adepte de cocoa, tu as
Bloc de code:
void NSDecimalRound(NSDecimal *result, const NSDecimal *number, int scale, NSRoundingMode roundingMode)

Avec pour valeurs de roundingMode, le choix entre NSRoundDown, NSRoundUp, NSRoundPlain et NSRoundBankers. :zen:
 
citron a dit:
Et si on veut pas afficher des zéro inutiles en après la virgule, comment fait-on?

par exemple, je veux que 10,0100 s'affiche 10.01 que 10,1000 s'affiche 10.1 et 10.0000 s'affiche 10

Désolé pour le retard... J'ai pas suivi le fil :D

Pour afficher avec un minimum d'espace il faut utiliser %g au lieu de %f, par exemple :

Bloc de code:
printf ("float = %g", 10.01000);     //affiche 10.01
printf ("float = %g", 10.1000);      //affiche 10.1
printf ("float = %g", 10.00090);     //affiche 10.0009
printf ("float = %.2g", 10.1111);    //affiche 10.11
printf ("float = %.2g", 10.00090);   //affiche 10

C'est du C/C++ standard, donc portable...