Un nombre à virgule flottante IEEE-754 <1 (c'est-à-dire généré avec un générateur de nombres aléatoires qui génère un nombre> = 0,0 et <1,0) peut-il être multiplié par un entier (sous forme de virgule flottante) pour obtenir un nombre égal ou supérieur à cet entier en raison de l'arrondi?
c'est à dire
double r = random() ; // generates a floating point number in [0, 1)
double n = some_int ;
if (n * r >= n) {
print 'Rounding Happened' ;
}
Cela pourrait être équivalent à dire qu'il existe un N et R tels que si R est le plus grand nombre inférieur à 1 qui peut être représenté dans IEEE-754 alors N * R> = N (où * et> = sont appropriés IEEE- 754 opérateurs)
Cela vient de cette question basée sur cette documentation et la fonction aléatoire postgresql