Extrême valeurs numériques à virgule flottante de précision dans la R

Quelqu'un peut-il svp m'expliquer la sortie suivante. Je sais qu'il a quelque chose à faire avec précision en virgule flottante, mais de l'ordre de magnitue (différence 1e308) me surprend.

0: haute précision

> 1e-324==0
[1] TRUE
> 1e-323==0
[1] FALSE

1: très imprécise

> 1 - 1e-16 == 1
[1] FALSE
> 1 - 1e-17 == 1
[1] TRUE
Oui, c'est la R FAQ 7.31
En particulier, essayez de options(digits = 22); x <- 1 - 1e-16; y <- 1 - 1e-17 == 1; print(y); print(x)
Je ne pense pas que le “double” vous offre la même question à tous. L'OP n'a pas l'air de dire qu'ils sont surpris à propos de la valeur d'avoir à être représentés de la même façon mais à propos de la densité de représentable, numéros de près de 0 et de près de 1.
peut-être que vous avez raison et j'ai été trop sévère. je vais le laisser à Romain pour décider
tu veux dire Romain, l'utilisateur avec un insigne d'or qui vient de fermer la question sans lire les commentaires ou la recherche de la véritable double, si il ya en effet un? La question est en de bonnes mains.

OriginalL'auteur AllYouCanEat86 | 2014-07-20