myInt = int(5 * myRandom())
myRandom() es un flotador generado aleatoriamente, que debería ser 0,2.¿Casting a los errores de coma flotante e interna?
Por lo tanto, esta afirmación debería ser de 1.
Mi pregunta: ¿es posible que debido a un error de coma flotante NO se evalúe a 1?
Por ejemplo, si debido a un error de punto flotante algo que debería ser 0,2 que podría ser MENOS que eso? IE, por ejemplo, considere las siguientes posibilidades: 3
int(5 * 0.2) = 1 //case 1 normal
int(5 * 0.2000000000000001) = 1 //case 2 slightly larger, its OK
int(5 * 0.1999999999999999) = 0 //case 3 negative, is NOT OK, as int() floors it
¿Es case3 incluso posible ?, con ,1999999999999999 ser el resultado de un error de punto flotante? Nunca he visto un épsilon negativo hasta el momento, solo el caso 2, cuando es un poco más grande, y eso está bien, como cuando se lanza a int(), que lo "nivela" con el resultado correcto. Sin embargo, con un épsilon negativo, el efecto 'flooring' hará que el resultado 0.9999999999999996 se evalúe a 0.
No creo que sea posible, no. La multiplicación y el redondeo solo deberían prestar atención a la cantidad máxima de dígitos significativos posibles. – Ryan
Si se genera aleatoriamente, ¿por qué "debería" ser 0.2? –
Esto es C++, no C. No puede usar la sintaxis del constructor en C. –