pourquoi est 24 * 60 * 60 * 1000 * 1000 divisé par 24 * 60 * 60 * 1000 pas égal à 1000 en Java?
pourquoi 24 * 60 * 60 * 1000 * 1000 divisé par 24 * 60 * 60 * 1000 pas égal à 1000 en Java?
source d'informationauteur Satish
Vous devez vous connecter pour publier un commentaire.
Car la multiplication des dépassements de 32 bits entiers. En 64 bits c'est pas grave:
Évidemment, après la multiplication a débordé, la division n'est pas la "annuler" que le trop-plein.
Vous avez besoin pour commencer avec 24L * 60 * ... parce que l'int des débordements.
Votre question BTW est un copier/coller de Puzzle 3: Division Longue de Java Casse-Têtes 😉
Si vous souhaitez effectuer ce calcul, vous devez soit de revoir l'ordre des opérations (pour éviter les débordements) ou utiliser un plus grand type de données. Le vrai problème, c'est que l'arithmétique fixe, la taille des entiers en Java n'est pas associatif, c'est une douleur, mais il y a des compromis à faire.