Saya ingin menangani kasus khusus di mana mengalikan dua angka bersama-sama menyebabkan luapan. Kode tersebut terlihat seperti ini:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
Itu versi yang disederhanakan. Dalam program nyata a
dan b
bersumber dari tempat lain saat runtime. Yang ingin saya capai adalah seperti ini:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Bagaimana saran Anda agar saya membuat kode terbaik ini?
Perbarui: a
dan b
selalu tidak negatif dalam skenario saya.