Bonjour,
J'ai un problème très étrange dans mon script R

La partie qui pose problème est celle-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
print(paste("heureArrivee[i]",heureArrivee[i]))
print(paste("tempsCourant",tempsCourant))
tempsAttendu <- heureArrivee[i] - tempsCourant
print(paste("tempsAttendu",tempsAttendu))
cela me retourne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[1] "heureArrivee[i] 4.1"
[1] "tempsCourant 4"
[1] "tempsAttendu 0.0999999999999996"

Comment est-il possible qu'une simple soustraction correspondant à 4.1 - 1 renvoi 0.0999999999999996

Ce qui est d'autant plus étrange, est que dans certain cas, le programme fait comme ci ce nombre était vraiment 0.1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
print(paste("caisse avant",caisse[j]))
caisse[j] <- caisse[j] - tempsAttendu
print(paste("tempsAttendu",tempsAttendu))
print(paste("caisse apres",caisse[j]))
retourne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[1] "caisse avant 1"
[1] "tempsAttendu 0.0999999999999996"
[1] "caisse apres 0.9"
[1] "tempsCourant 4.1"
Si cela fonctionnait dans tout les cas, je m'en inquiéterais pas trop, mais dans certains ça cela me foire mon résultat et donc ça pose vraiment un problème
Voici un exemple de cas où ça me foire le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
[1] "heureArrivee[i] 4.2"
[1] "tempsCourant 4.1"
[1] "tempsAttendu 0.100000000000001"
[1] "caisse avant 0.9"
[1] "tempsAttendu 0.100000000000001"
[1] "caisse apres 0.8"
[1] "heureArrivee[i] 4.2"
[1] "tempsCourant 4.1"
[1] "tempsAttendu 0.100000000000001"
[1] "caisse avant 1"
[1] "tempsAttendu 0.100000000000001"
[1] "caisse apres 0.899999999999999"
[1] "tempsCourant 4.2"

Je n'arrive pas à comprendre comment cela est possible, et je ne pense pas que cela ai un rapport avec le reste de mon code étant donné que les valeur heureArrivee[i] et tempsCourant sont bonne dans les print

Si quelqu'un aurait une piste pour m'aider à résoudre ce problème...
Merci d'avance