Forse, è una domanda molto semplice ma non ho potuto ottenere la risposta. Ho cercato un po 'di tempo (ora Google pensare che sto inviando domande automatizzate http://twitter.com/michaelsync/status/17177278608) ..C++ float to int
int n = 4.35 *100;
cout << n;
Perché l'uscita diventano "434" al posto di "435"? 4.35 * 100 = 435 che è un valore intero e questo dovrebbe essere assegnabile alla variabile intera "n", giusto?
OPPURE Il compilatore C++ esegue il cast di 4.35 su intero prima di moltiplicarlo? Penso che non lo farà. Perché il compilatore cambia automaticamente da 4.35 a 4.34, che è ancora un galleggiante ??
Grazie.
Come sarebbe il risultato 434 se 4.35 viene lanciato su un 'int' prima della moltiplicazione? Non sarebbe 400? Giusto per escludere una delle tue spiegazioni. – pmr
se hai fatto 'int y = (int) (4.35 * 100);' non lo faresti - se stai per chiamare una funzione, puoi scegliere e scegliere quella appropriata per ottenere la risposta che ti serve, che tu potrebbe anche fare in C++. Ma nel codice di esempio non si sta chiamando una funzione, si sta utilizzando il typecasting implicito fornito dalla lingua. –
4.35 non è esattamente rappresentabile. Il prossimo valore doppio più vicino sembra essere (nel tuo caso) 4.34999 ... che, moltiplicato per 100, risulta in 434.999 ... ed è quindi convertito in 434. – sellibitze