Rechercher : dans
Par :

[c++] Comment je peut arrondir mes floats ?

Dernière réponse le 4 mai 2009 à 23:33:55 Joe, le 6 jui 2004 à 16:28:18 
 Signaler ce message aux modérateurs

Comment je peux arrondir des float a exactement 6 chiffres significatifs.

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

Merci

Meilleures réponses pour « [c++] Comment je peut arrondir mes floats ? » dans :
[mythes] Photo nette à partir d'une photo floue VoirMythe Avec un traitement par ordinateur, on peut déflouter une photo, c'est-à-dire obtenir une photo nette à partir d'une photo floue. Réalité FAUX. Explications L'ordinateur ne peut pas inventer les détails de l'image perdus par le flou. Pour...
Télécharger Floola VoirFloola est une application gratuite dans la gestion efficace de votre iPod sur votre téléphone mobile Motorola ou tous autres modèles supportant iTunes. C'est une application pouvant être lancée directement à partir de votre iPod. Aucune installation...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

blurk, le 6 jui 2004 à 16:42:37

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

Répondre à blurk

2

Joe, le 6 jui 2004 à 17:17:01

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 à Joe

3

Canard007, le 6 jui 2004 à 18:01:13

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)

Répondre à Canard007

4

teebo, le 6 jui 2004 à 18:27:30

Pour que ce soit plus propre tu devrais faire une classe...

.  .  Dieu a inventé le chat
\_/  pour que l'homme puisse caresser le tigre

Répondre à teebo

5

Ravachol, le 6 jui 2004 à 19:09:16

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

Répondre à Ravachol

6

 tutu, le 4 mai 2009 à 23:33:55

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;

Répondre à tutu
Collection CommentÇaMarche.net