problème de manipulation des Long
Bonsoir à tous,
voilà, j'ai un souci qui me semble trivial, mais mes petits neurones n'arrivent pas à trouver la solution. :(
Voilà un exemple de code ou je prends un Long (64bits), je le scinde en deux Integer(32bits) et je réessaye de les rassembler ensuite pour retrouver le Long original:
Code:
1 2 3 4 5 6 7 8 9 10
|
long DEUX_PUISSANCE_32 = 4294967296L;
long inLong = 4609628819153601335L;
int big = (int)(inLong / DEUX_PUISSANCE_32);
int little = (int)(inLong % DEUX_PUISSANCE_32);
long outLong = ((long)big * DEUX_PUISSANCE_32) + ((long)little);
System.out.println("Result of internal manipulation ("+inLong+" / "+outLong+") is "+(inLong == outLong)); |
Mon problème est que le résultat n'est pas celui escompté : inLong et outLong sont différents:
Code:
Result of internal manipulation (4609628819153601335 / 4609628814858634039) is false
J'ai certainement raté un truc que j'arrive pas à débusquer... Si vous avez une idée, merci beaucoup d'avance :)