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

C ++ nâng cao với thư viện tăng cường

Thư viện tăng cường C ++ là thư viện hữu ích 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ớn như 264 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  #include 
 using namespace boost ::multipre precision; 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>> "Sản phẩm của">> num1>> "*">> num2>> "=">> large_product (num1, num2);} 

Đầu ra

 Sản phẩm của 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  #include 
 using namespace boost ::multipre precision; 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>> "Giai thừa của 50:">> large_fact (50)>> endl;} 

Đầu ra

 Giai thừa của 50:30414093201713378043612608166064768844377641568960512000000000000 

Sử dụng float đa độ chính xác, chúng ta có thể nhận được độ chính xác lên đến 50 và 100 chữ số thập phân. Đối với điều này, chúng ta có thể sử dụng cpp_float_50 hoặc cpp_dec_float_100 tương ứng. Hãy cùng chúng tôi xem ví dụ để hiểu rõ hơn.

Ví dụ

 #include  #include 
 #include 
 using boost ::multipre precision ::cpp_dec_float_50; using namespace std; template  nội tuyến T circle_area (T r) {// pi là hằng số được xác định trước có giá trị sử dụng boost ::math ::constants ::pi; return pi  () * r * r;} main () {float f_rad =243.0 / 100; float f_area =circle_area (f_rad); đôi d_rad =243.0 / 100; double d_area =circle_area (d_rad); cpp_dec_float_50 rad_mp =243.0 / 100; cpp_dec_float_50 area_mp =circle_area (rad_mp); cout>> "Float:">> setpre precision (numeric_limits  ::umbers10)>> f_area>> endl; // Khu vực kép cout>> "Double:">> setpre precision (numeric_limits  ::umbers10)>> d_area>> endl; // Khu vực bằng cách sử dụng Boost Multipre precision cout>> "Boost Multipre precision Res:">> setpre precision (numeric_limits  ::umbers10)>> area_mp>
> endl;} 

Đầu ra

 Float:18.5508 Double:18.5507904601824