Bonjour,

je souhaite stocker dans une variable de type entier la partie entiere du quotient de la division de 2 nombres de type double. Mais j'ai des problemes d'arrondi.

Dans l'exemple ci-dessous, numerateur est sense contenir 0.6 mais il contient en fait 0.59999, denominateur est sensi contenir 0.2 mais contient 0.200001.

Donc le "forcage de type (int)" me donne 2. La seule technique que j'ai trouvee consiste a utiliser ceil() et floor() mais il y a peut etre plus simple que ce if.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <math.h>
 
int main()
{
double numerateur, denominateur, N0;
int q1, q2;
 
	numerateur = 0.6;
	denominateur = 0.2;
 
	N0 = numerateur/denominateur;
 
	q1 = (int)N0;		
	if (N0 - floor(N0) <= 0.5)
	{
		q2 = floor(N0);
	}
	else
	{
		q2 = ceil(N0);
	}
 
	printf("N0 = num/denom = %.1f\n",N0);
	printf("q1 = (int)N0 = %d\n",q1);
	printf("q2 = (ceil or floor)N0 = %d\n",q2);
	return 0;
}
Je vous remercie par avance pour vos suggestions.

Lepapat

PS : si j'initialise directement N0 a 3.0, pas de souci evidemment.