Forum Clubic

C++ arondire au 0.5 près

Bonjour,

Pour un prjet au cours, je dois faire un programme qui calcule la moyenne d’un nombre défini de note. Jusque là c’est facile. Mais la ou ça complique, c’est que je dois arrondire le résultat à 0.5 près. Donc, si le résultats est 4.2466443234432, ( en gros 4.24 ) il dois m’afficher 4. Et si c’est 4.25, il dois m’afficher 4.5 :slight_smile:

Je sais qu’il existe une fonction avec un librairie spéciale, mais je ne sais plus les quelles ^^.

Pourqiez vous m’éclairer ma lanterne :stuck_out_tongue:

En C++, je sais pas. En C, j’aurai fais printf("%4.2g", f) et ça m’aurait convenu.

Sinon tu as l’astuce bâtarde, puisque tes notes s’étalent de 0 à X (X < 2^31-1) :

int noteInt = (int) note * 100;
int noteFrac = noteInt % 100;
int noteEntier = noteInt / 100;

Tu auras ainsi la partie entière, et la partie décimale.

essaie
(int(x*2) [le_signe_plus] 0.5)/2

NB: je ne sais pas pourquoi, mais je n’arrive pas à ce que mes signes “plus” soient visibles à l’éditeur

[floor[/url] et ceil, apres, tu peux essayer à la (semi)mano en passant via [url=http://www.cplusplus.com/reference/clibrary/cmath/modf.html]modf](http://www.cplusplus.com/reference/clibrary/cmath/floor.html).

Que c’est bien compliqué tout ça :). Donc le plus simple :

float fValue = 0.25f;
float fRounded = (int) (fValue + 0.5f);

EDIT: OOPS, j’avais mal lu ;). Ca m’apprendra a faire le malin :). La solution de GCC semble parfaite ;).
Edité le 12/01/2008 à 00:32