Recherche
Posez votre question Signaler

[c++] Comment je peut arrondir mes floats ? [Résolu]

Joe - Dernière réponse le 4 mai 2009 à 23:33
Comment je peux arrondir des float a exactement 6 chiffres significatifs.

c'est a dire 15,15487789 -> 15.1549
3 -> 3.00000

Merci
Lire la suite 
Réponse
+1
moins plus
Salut,
sinon tu peux faire un truc dans ce genre la.
Bon c'est juste pour le principe il faudrait le mettre au propre et pourquoi pas dans une classe comme le proposait teebo.

int main(int argc, char *argv[])
{
  double d1 = 9.3248656565;
  char ch1[10];
  char form[5];
  if (d1<10) strcpy(form,"%.5f");
  else if (d1<100) strcpy(form,"%.4f");
    else if (d1<1000) strcpy(form, "%.3f");
  sprintf(ch1, form, d1);
  cout << ch1 << endl;  
  return EXIT_SUCCESS;
}


A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
Ajouter un commentaire
Réponse
+0
moins plus
salut!

arrondi supérieur (en C, dans math.h ontrouve ceil() qui le fait)
multiplier par 100000 et mettre dans un integer (ou long)
ajouter 5
mettre le resultat dans un float (ou double) diviser par 100000

arrondi inférieur (en C, dans math.h ontrouve floor() qui le fait)
multiplier par 100000 et mettre dans un integer (ou long)
soustraire 5
mettre le resultat dans un float (ou double) diviser par 100000

la valeur 100000 signifie qu'on arrondit le 4e chiffre après la virgule, comme dans ton exemple.

bien sur, si tu programmes en C (ça j'en sais rien), ceil et floor font le boulot expliqué là dessus.

J'aime pas VB parce qu'il fait l'arrondi sans demander.
sinon avec n'importe quel language ça devrait marcher.

cordialement
Joe- 6 juil. 2004 à 17:17
En fait je veut que mon float soit affiché avec 6 chiffres significatifs....

Dans to algorithme, on prend 6 chiffres significatifs, mais on ne les affiche pas forcement.........
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
ba apres pour etre sur que tu as bien 6 chiffres signifiquatif apres la virgule tu ecrit le float dans une string
sprintf(..) et tu compte combien il y a de caractere apres la virgule (strcmp(chaine1,chaine2) (1 caractere= 1 chiffre) ensuite tu n as plus qu a rajouté strcpy() des 0 manquant dans la string..ensuite tu affiche ta string.. (fonctions dans string.h)

Ajouter un commentaire
Réponse
+0
moins plus
Pour que ce soit plus propre tu devrais faire une classe...

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre
Ajouter un commentaire
Réponse
+0
moins plus
Je rencontrais le mêmes probleme pour remplir des bases avec des nombre , ci dessous un source qui permet
d'additionner une data d'une base avec un float .

double NbrTraitDouble;
float NbrTrait;

NbrTraitDouble = DataModule1->Table1->FieldValues["valeur"];
NbrTraitDouble = NbrTraitDouble + NbrTrait;
// le coef 10000 me place la précision à 4 chiffre après la virgule
NbrTraitDouble = NbrTraitDouble * 10000;
NbrTraitDouble = ceil(NbrTraitDouble);
NbrTraitDouble = NbrTraitDouble /10000;
DataModule1->Table1->FieldValues["valeur"] = NbrTraitDouble;
Ajouter un commentaire
Ce document intitulé «  [c++] Comment je peut arrondir mes floats ?  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.