Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบจำนวนเต็มล้นในการคูณใน C ++


สมมติว่าเราต้องการหาผลลัพธ์หลังจากคูณตัวเลข A และ B สองตัว เราต้องตรวจสอบว่าค่าที่คูณจะเกินจำนวนเต็ม 64 บิตหรือไม่ หากเราคูณ 100 และ 200 จะไม่เกิน ถ้าเราคูณ 10,000000000 และ -10000000000000 มันจะล้น

ในการตรวจสอบนี้ เราต้องทำตามขั้นตอนบางอย่าง เหล่านี้เป็นเหมือนด้านล่าง −

ขั้นตอน

  • ถ้าตัวไหนเป็น 0 จะไม่เกิน

  • มิเช่นนั้นหากผลคูณของสองหารด้วยหนึ่งเท่ากับอีกอันหนึ่งจะไม่เกิน

  • สำหรับบางกรณีก็จะเกิน

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
bool isMulOverflow(long long A, long long B) {
   if (A == 0 || B == 0)
      return false;
   long long result = A * B;
   if (A == result / B)
      return false;
   else
      return true;
}
int main() {
   long long a = 10000000000 , b = -10000000000;
   if(isMulOverflow(a, b)){
      cout <<"It will overflow";
   }
   else{
      cout <<"It will not overflow";
   }
}

ผลลัพธ์

It will overflow