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.
Je vous remercie par avance pour vos suggestions.
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; }
Lepapat
PS : si j'initialise directement N0 a 3.0, pas de souci evidemment.
Partager