Cuando un doble tiene un valor entero 'exacta', así:Cuando un doble con un valor entero se convierte en un número entero, ¿se garantiza que lo haga "correctamente"?
double x = 1.0;
double y = 123123;
double z = -4.000000;
¿Está garantizado que va a redondear adecuadamente a 1, 123123, y -4 cuando se convierte a través de un tipo entero (int) x , (int) y, (int) z? (Y no truncar a 0, 123122 o -5 b/c de rareza de coma flotante). Pregunto b/c de acuerdo con this page (que es sobre fp's en lua, un lenguaje que solo se dobla como su tipo numérico de forma predeterminada), habla sobre cómo las operaciones de enteros con dobles son exactas de acuerdo con IEEE 754, pero no estoy seguro si, cuando llamo a C-funciones con parámetros de tipo entero, tengo que preocuparme de redondear los dobles manualmente, o se tiene cuidado cuando los dobles tienen valores enteros exactos.
Debe aclarar algunos elementos aquí a) haciendo doble te refieres a 8 bytes o 4 bytes yb) por correcto, ¿quieres decir que la ronda va hacia cero? – JaredPar
Posible duplicado: http://stackoverflow.com/questions/9154687/validity-of-checking-exact-value-of-preset-double – Ruben
No se está produciendo un "redondeo". El elenco realiza el truncamiento. –