# Nombre de chiffres après la virgule



## shamir (29 Juillet 2004)

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?


----------



## Bernard53 (29 Juillet 2004)

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.


----------



## Philou309 (30 Juillet 2004)

Vous programmez en quoi?


----------



## klog (1 Août 2004)

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 :


```
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.


----------



## tatouille (2 Août 2004)

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 :
> 
> 
> ```
> ...



#include <math.h>


----------



## citron (11 Août 2004)

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 :
> 
> 
> ```
> ...



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


----------



## Didier Guillion (11 Août 2004)

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


----------



## _gromit_ (12 Août 2004)

Sinon si tu es comme moi adepte de cocoa, tu as

```
void NSDecimalRound(NSDecimal *result, const NSDecimal *number, int scale, NSRoundingMode roundingMode)
```

Avec pour valeurs de roundingMode, le choix entre NSRoundDown, NSRoundUp, NSRoundPlain et NSRoundBankers.


----------



## klog (21 Août 2004)

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   

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


```
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...


----------



## tatouille (23 Août 2004)

ca aussi c'est un peu près standard

math.h


----------

