Un IEEE-754 numero in virgola mobile <1 (ovvero generato con un generatore di numeri casuali che genera un numero> = 0,0 e <1,0) può mai essere moltiplicato per un numero intero (in forma di virgola mobile) per ottenere un numero uguale o maggiore di che numero intero a causa di arrotondamento?
vale a dire
double r = random() ; // generates a floating point number in [0, 1)
double n = some_int ;
if (n * r >= n) {
print 'Rounding Happened' ;
}
Ciò potrebbe equivalere a dire che esiste un N e un R tali che se R è il numero più grande inferiore a 1 che può essere rappresentato in IEEE-754, allora N * R> = N (dove * e> = sono IEEE appropriati- 754 operatori)
Questo deriva da questa domanda basata su questa documentazione e sulla funzione casuale postgresql