Je veux gérer le cas particulier où la multiplication de deux nombres provoque un débordement. Le code ressemble à quelque chose comme ceci :
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
C'est une version simplifiée. Dans le vrai programme a
y b
proviennent d'autres sources au moment de l'exécution. Ce que je veux réaliser est quelque chose comme ceci :
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Quelle est la meilleure façon de coder cela ?
Mise à jour : a
y b
sont toujours non négatives dans mon scénario.
7 votes
C'est dommage que Java ne fournisse pas d'accès indirect au CPU. drapeau de débordement comme se fait en C# .