Computer >> Máy Tính >  >> Lập trình >> C ++

Xử lý số lớn trong C ++?

Trong C ++, chúng ta có thể sử dụng số lượng lớn bằng cách sử dụng thư viện tăng cường. Thư viện tăng cường C ++ này là thư viện được sử dụng rộng rãi. Điều này được sử dụng cho các phần khác nhau. Nó có miền ứng dụng lớn. Ví dụ:sử dụng boost, chúng ta có thể sử dụng số lượng lớn như 2 64 trong C ++.

Ở đây chúng ta sẽ thấy một số ví dụ về thư viện tăng cường. Chúng ta có thể sử dụng kiểu dữ liệu số nguyên lớn. Chúng ta có thể sử dụng các kiểu dữ liệu khác nhau như int128_t, int256_t, int1024_t, v.v. Bằng cách sử dụng này, chúng ta có thể dễ dàng nhận được độ chính xác lên đến 1024.

Lúc đầu, chúng tôi đang nhân hai con số khổng lồ bằng cách sử dụng thư viện tăng cường.

Ví dụ

#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t large_product(long long n1, long long n2) {
   int128_t ans = (int128_t) n1 * n2;
   return ans;
}
int main() {
   long long num1 = 98745636214564698;
   long long num2 = 7459874565236544789;
   cout << "Product of "<< num1 << " * "<< num2 << " = " <<
   large_product(num1,num2);
}

Đầu ra

Product of 98745636214564698 * 7459874565236544789 =
736630060025131838840151335215258722

Một loại kiểu dữ liệu khác là Kiểu dữ liệu chính xác tùy ý. Vì vậy, chúng tôi có thể sử dụng bất kỳ độ chính xác nào bằng cách sử dụng kiểu dữ liệu cpp_int. Nó tự động chỉ định độ chính xác trong thời gian chạy.

Ví dụ

#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
cpp_int large_fact(int num) {
   cpp_int fact = 1;
   for (int i=num; i>1; --i)
      fact *= i;
   return fact;
}
int main() {
   cout << "Factorial of 50: " << large_fact(50) << endl;
}

Đầu ra

Factorial of 50:
30414093201713378043612608166064768844377641568960512000000000000