Non si tratta di un cast errato ma del (classico) problema degli errori di conversione tra sistema binario e decimale riguardante i floating point.
Senza entrare nel merito, puoi provare con
int1=(int)a;
b=(int)(a*100.0-int1*100.0);
Considera che non e' necessaria la variabile intermedia e che e' sempre necessario indicare i cast da double ad int.
Anche se l'espressione e' equivalente a quella da te usata, la sequenza di calcolo diversa evita il manifestarsi dell'errore ...

Rispondi quotando