Quando un doppio ha un valore intero 'esatto', in questo modo:Quando un duplicato con un valore intero viene lanciato su un numero intero, è garantito farlo "correttamente"?
double x = 1.0;
double y = 123123;
double z = -4.000000;
E 'garantito che sarà arrotondare correttamente a 1, 123123, e -4 quando il cast in un tipo integer via (int) x , (int) y, (int) z? (E non troncare a 0, 123122 o -5 b/c di stranezze in virgola mobile). Chiedo b/c in base a this page (che riguarda fp in lua, una lingua che ha solo il doppio del suo tipo numerico per impostazione predefinita), parla di come le operazioni in interi con doppi sono esatte secondo IEEE 754, ma non sono sicuro se, quando si chiamano le funzioni C con i parametri di tipo intero, devo preoccuparmi di arrotondare i doppi manualmente, oppure si cura quando i doppi hanno valori interi esatti.
Dovresti chiarire alcuni elementi qui a) per doppio intendi 8 byte o 4 byte e b) per corretto intendi che il giro va verso lo zero? – JaredPar
Possibile duplicato: http://stackoverflow.com/questions/9154687/validity-of-checking-exact-value-of-preset-double – Ruben
Non si verifica alcun "arrotondamento". Il cast esegue il troncamento. –