Wie kann ich überprüfen, ob das Multiplizieren von zwei Zahlen in Java einen Überlauf verursacht?

Ich möchte den speziellen Fall behandeln, in dem das Multiplizieren von zwei Zahlen einen Überlauf verursacht. Der Code sieht ungefähr so ​​aus:

int a = 20;
long b = 30;

// if a or b are big enough, this result will silently overflow
long c = a * b;

Das ist eine vereinfachte Version. Im realen Programma undb werden zur Laufzeit an anderer Stelle bezogen. Was ich erreichen möchte, ist ungefähr so:

long c;
if (a * b will overflow) {
    c = Long.MAX_VALUE;
} else {
    c = a * b;
}

Wie schlagen Sie vor, dass ich dies am besten codiere?

Aktualisieren:a undb sind in meinem szenario immer nicht negativ.

Antworten auf die Frage(13)

Ihre Antwort auf die Frage