STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Các hàm tính toán (Math Function) trong C++

Trong bài học hôm nay chúng ta sẽ cùng tìm hiểu các hàm toán học (Math Function) trong C++. Vậy C++ hổ trợ cho chúng ta các hàm toán học nào? Để sử dụng các hàm toán học trong C++ chúng ta cần khai báo thư viện nào? Chúng ta sẽ cùng tìm hiểu trong nội dung sau đây.

1. Hàm toán học (Math Function) trong C++

Trong C++ cung cấp một số hàm toán học cơ bản và chúng ta phải include <math.h> thì mới có thể sử dụng các hàm toán học được.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong C++ có hổ trợ các loại toán học sau:

  • Trignometric functions
  • Hyperbolic functions
  • Exponential functions
  • Floating point manipulation functions
  • Maximum,Minimum and Difference functions
  • Power functions
  • Nearest integer operations
  • Other functions
  • Macro functions
  • Comparison macro functions
  • Error and gamma functions

Trong bài học hôm nay chúng ta chỉ tìm hiểu một trong số các loại trên thôi nhé. 

Trignometric functions

Hàm Mô tả
cos(x) Dùng để tính cosin của x. Giá trị trả về trong phạm vi [-1, 1]
sin(x) Dùng để tính sin của x. Giá trị trả về trong phạm vi [-1, 1]
tan(x) Dùng để tính tan của x. 
acos(x) Dùng để tìm cosin nghịch đảo (acos(x) = cos-1x) của x. Giá trị trả về trong phạm vi (0,∏) nếu -1≤x≤1, không phải một số (nan) nếu x<-1 hoặc x>1
asin(x) Dùng để tìm sin nghịch đảo (asin(x) = sin-1x) của x.  Giá trị trả về là -∏/2,∏/2 nếu -1≤x≤1, không phải là số (nan) nếu x<-1 hoặc x>1
atan(x) Dùng để tìm tan nghịch đảo (atan(x) = tan-1x) của x. Giá trị trả về trong phạm vi [-∏/2, ∏/2]
atan2(x,y) Dùng để tìm tan nghịch đảo của tọa độ x và y.

Ví dụ

Chúng ta cùng xem ví dụ đơn giản sau đây có sử dụng các hàm toán học như asin, sin, cos, tan, ...

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double goc = 60;  
    double d = goc*3.14/180;
    cout << "cosin =  " << cos(d) << endl; 
    cout << "sin =  " << sin(d) << endl;
    cout << "tan =  " << tan(d) << endl;
    cout << "cosin nghich dao =  " << acos(d) << endl; 
    cout << "sin nghich dao =  " << asin(d) << endl;
    cout << "tan nghich dao =  " << atan(d) << endl;
    
    return 0;  
}  

Và kết quả sau khi thực thi chương trình trên:

math function JPG

Hyperbolic functions

Hàm Mô tả
cosh(x) Dùng để tính cos hyperbolic của x.
sinh(x) Dùng để tính sin hyperbolic của x.
tanh(x) Dùng để tính tang hyperbolic của x.
acosh(x) Dùng để tìm nghịch đảo cos hyperbolic của x.
asinh(x) Dùng để tìm nghịch đảo sin hyperbolic của x.
atanh(x) Dùng để tìm nghịch đảo tang hyperbolic của x.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng hyperbolic functions trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double x = 45;  
    double d = x*3.14/180;
    cout << "cos hyperbolic =  " << cosh(d) << endl; 
    cout << "sin hyperbolic =  " << sinh(d) << endl;
    cout << "tang hyperbolic =  " << tanh(d) << endl;
    cout << "nghịch dao cos hyperbolic =  " << acosh(d) << endl; 
    cout << "nghich dao sin hyperbolic =  " << asinh(d) << endl;
    cout << "nghich dao tang hyperbolic =  " << atanh(d) << endl;
    
    return 0;  
}

Và kết quả sau khi thực thi chương trình trên như sau:

math function p2 JPG

Nearest integer operations

Hàm Mô tả
ceil(x) Dùng để làm tròn lên giá trị của x.
floor(x) Dùng để làm tròn xuống giá trị của x.
round(x) Dùng để làm tròn giá trị của x.
lround(x) Dùng để làm tròn giá trị của x và chuyển thành số nguyên long.
llround(x) Dùng để làm tròn giá trị của x và chuyển thành số nguyên long long.
fmod(n,d) Dùng để lấy phần dư của phép chia n cho d
trunc(x) Dùng để làm tròn xuống không chữ số thập phân
rint(x) Dùng để làm tròn giá trị của x bằng rounding mode
lrint(x) Dùng để làm trong giá trị của x bằng roungding mode và chuyển đổi thành số nguyên long.
llrint(x) Dùng để làm tròn giá trị x và chuyển thành số nguyên long long
nearbyint(x) Dùng để làm tròn giá trị x thành giá trị tích phân gần đó
remainder(n,d) Dùng để tính phần còn lại của n/d.
remquo() Dùng để tính toán phần còn lại và thương.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng nearest integer operations trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double x = 9.8;
    double y = 3;
    cout << "ceil(" << x << "): " << ceil(x) << endl;
    cout << "floor(" << x << "): " << floor(x) << endl;
    cout << "round(" << x << "): " << round(x) << endl;
    cout << "lround(" << x << "): " << lround(x) << endl;
    cout << "llround(" << x << "): " << llround(x) << endl;
    cout << "fmod(" << x << "," << y << "): " << fmod(x,y) << endl;
    cout << "trunc(" << x << "): " << trunc(x) << endl;
    cout << "rint(" << x << "): " << rint(x) << endl;
    cout << "lrint(" << x << "): " << lrint(x) << endl;
    cout << "llrint(" << x << "): " << llrint(x) << endl;
    return 0;  
}

Và kết quả sau khi thực thi chương trình trên như sau:

math function p7 JPG

Other functions

Hàm Mô tả
fabs(x) Dùng để tính giá trị tuyệt đối của x.
abs(x) Dùng để tính giá trị tuyệt đối của x.
fma(x,y,z) Dùng để tính biểu thức x * y + z.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng fabs, abs và fma trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double x = -5.6;
    double y = 2;
    double z = 3;
    cout << "fabs(" << x << "): " << fabs(x) << endl;
    cout << "abs(" << x << "): " << abs(x) << endl;
    cout << "fma("<< x << "," << y << "," << z << "): " << fma(x,y,z) << endl;
    
    return 0;  
}

Và kết quả sau khi thực thi chương trình trên như sau:

math function p6 JPG

Macro functions

Hàm Mô tả
fpclassify(x) Dùng để trả về giá trị của loại khớp với một trong các hằng số macro.
isfinite(x) Dùng để kiểm tra xem x có hữu hạn hay không.
isinf(x) Dùng để kiểm tra xem x là vô hạn hay không.
isnan(x) Dùng để kiểm tra xem x có phải là nan hay không.
isnormal(x) Dùng để kiểm tra xem x có bình thường hay không.
signbit(x) Dùng để kiểm tra xem dấu của x có âm hay không.

Ví dụ

Chúng ta cùng xem xét một ví dụ có sử dụng macro functions trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double x = 4.0/0.0;  
    switch(fpclassify(x))  
    {  
        case FP_INFINITE:  
            cout << "4.0/0.0 la FP_INFINITE" << endl;    
            break;  
        case FP_NAN:  
            cout << "4.0/0.0 la FP_NAN" << endl;  
            break;  
        case FP_ZERO:  
            cout << "4.0/0.0 la FP_ZERO" << endl;  
            break;  
        case FP_SUBNORMAL:  
            cout << "4.0/0.0 la FP_SUBNORMAL" << endl;  
            break;  
        case FP_NORMAL:  
            cout << "4.0/0.0 FP_NORMAL";  
            break;  
        default:  
            cout << "4.0/0.0 khong phai la so";  
    }  
    
    x = 5;
    cout << "isfinite(" << x << "): " << isfinite(x) << endl;
    cout << "isinf(" << x << "): " << isinf(x) << endl;
    cout << "isnan(" << x << "): " << isnan(x) << endl;
    cout << "isnormal(" << x << "): " << isnormal(x) << endl;
    cout << "signbit(" << x << "): " << signbit(x) << endl;
    
    return 0;  
}

Và kết quả sau khi thực thi chương trình trên như sau:

math function p5 JPG

Comparison macro functions

Hàm Mô tả
isgreater(x,y) Dùng để xác định xem x có lớn hơn y hay không.
isgreaterequal(x,y) Dùng để xác định xem x có lớn hơn hoặc bằng y hay không.
less(x,y) Dùng để xác định xem x có nhỏ hơn y hay không.
islessequal(x,y) Dùng để xác định xem x nhỏ hơn hoặc bằng y.
islessgreater(x,y) Dùng để xác định xem x nhỏ hơn hay lớn hơn y hay không.
isunordered(x,y) Dùng để kiểm tra xem x có thể được so sánh một cách có ý nghĩa hay không.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng comparison macro functions trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    float x;
    float y;
    x = 3;
    y = 4;
    cout << "isgreater(x,y): " << isgreater(x,y) << endl;
    cout << "isgreaterequal(x,y): " << isgreaterequal(x,y) << endl;
    cout << "isless(x,y): " << isless(x,y) << endl;
    cout << "islessequal(x,y): " << islessequal(x,y) << endl;
    cout << "islessgreater(x,y): " << islessgreater(x,y) << endl;
    cout << "isunordered(x,y): " << isunordered(x,y) << endl;
    
    return 0;  
}  

Và kết quả sau khi thực thi chương trình trên như sau:

math function p4 JPG

Error and gamma functions

Hàm Mô tả
erf(x) Dùng để tính giá trị hàm lỗi của x.
erfc(x) Dùng để tính giá trị hàm lỗi bổ sung của x.
tgamma(x) Dùng để tính giá trị hàm gamma của x.
lgamma(x) Dùng để tính toán logarit của hàm gamma của x.

Ví dụ

Chúng ta cùng xem một ví dụ đơn giản có sử dụng error and gamma functions trong C++ như sau:

Ví dụ
#include <iostream>  
#include<math.h>  
using namespace std;  
int main()  
{  
    double x;
    x = 1;
    cout << "erf(x) =  " << erf(x/0) << endl; javascript:void(0)
    x = -1;
    cout << "erfc(x) = " << erfc(x/0) << endl;
    x = 0;
    cout << "tgamma(x) = " << tgamma(x) << endl;
    x = 2;
    cout << "lgamma(x) = " << lgamma(x) << endl;
    return 0;  
}

Và kết quả sau khi thực thi chương trình trên như sau:

math function p3 JPG

2. Kết luận

Như vậy chúng ta đã tìm hiểu xong về các hàm tính toán (Math Functions) có sẳn trong C++. Bài này rất là dài và có rất nhiều hàm chúng ta không thể nào nhớ hết nổi.

Vì vậy trong bài này các bạn chỉ cần nhớ include<math.h> để sử dụng các hàm tính toán trong C++.

Mình sẽ kết thúc bài học này ở đây nhé. Bài tiếp theo mình sẽ tìm hiểu về thừa kế trong C++. Các bạn nhớ theo dõi nhé.

Cùng chuyên mục:

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstdlib C/C++

Các hàm trong thư viện cstdlib C/C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm toán học (math) trong C / C++

Các hàm toán học (math) trong C / C++

Nếu bạn đang học C++ căn bản thì phải biết công dụng của những hàm…

Bài tập vòng lặp while và do while trong C++

Bài tập vòng lặp while và do while trong C++

Nếu một bài toán được giải bằng vòng lặp while thì bạn hoàn toàn có…

Bài tập vòng lặp for trong C++ có lời giải

Bài tập vòng lặp for trong C++ có lời giải

Vòng lặp for C++ rất quan trọng, nó được sử dụng rất nhiều khi xử…

Bài tập if else trong C++ (có đổi sang switch case)

Bài tập if else trong C++ (có đổi sang switch case)

Để thành thạo hai lệnh rẻ nhánh if else và switch case thì bạn phải…

Tìm hiểu cấu trúc mảng (array) trong C++

Tìm hiểu cấu trúc mảng (array) trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi thực ra là cách rút gọn code của lệnh if else,…

Các toán tử trong C++

Các toán tử trong C++

Toán tử đóng vai trò rất quan trọng trong lập trình, nó giúp chúng ta…

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

C++ là một ngôn ngữ lập trình phổ biến và mạnh mẽ có kiểu dữ…

Đọc ghi file trong C

Đọc ghi file trong C

Đa số sinh viên Việt Nam học lập trình C là để luyện tư duy…

Kiểu Union trong C

Kiểu Union trong C

Union có cách khai báo giống như struct, nhưng kích thước của nó sẽ lấy…

Hàm đệ quy trong ngôn ngữ C

Hàm đệ quy trong ngôn ngữ C

Giải thuật đệ quy nói chung và trong ngôn ngữ C nói riêng thì hàm…

Top