Các hàm toán học (cmath)
C++ không có sẵn các hàm toán học (như lũy thừa, căn bậc hai…) trong ngôn ngữ lõi. Thay vào đó, ta dùng thư viện chuẩn <cmath>.
Import thư viện
Phần tiêu đề “Import thư viện”#include <cmath>Các hàm phổ biến
Phần tiêu đề “Các hàm phổ biến”| Hàm | Ý nghĩa | Ví dụ | Kết quả |
|---|---|---|---|
std::pow(x, y) | Lũy thừa: x mũ y | std::pow(2, 10) | 1024 |
std::sqrt(x) | Căn bậc hai của x | std::sqrt(16) | 4 |
std::cbrt(x) | Căn bậc ba của x | std::cbrt(27) | 3 |
std::abs(x) | Giá trị tuyệt đối (số nguyên) | std::abs(-5) | 5 |
std::fabs(x) | Giá trị tuyệt đối (số thực) | std::fabs(-5.5) | 5.5 |
std::floor(x) | Làm tròn xuống | std::floor(4.7) | 4 |
std::ceil(x) | Làm tròn lên | std::ceil(4.2) | 5 |
std::round(x) | Làm tròn đến số nguyên gần nhất | std::round(4.5) | 5 |
std::log(x) | Log tự nhiên (ln) của x | std::log(2.718281828) | ~1 |
std::log10(x) | Log cơ số 10 của x | std::log10(1000) | 3 |
std::exp(x) | Hàm mũ tự nhiên e^x | std::exp(1) | ~2.71828 |
std::sin(x) | Sin của x (radian) | std::sin(0) | 0 |
std::cos(x) | Cos của x (radian) | std::cos(0) | 1 |
std::tan(x) | Tang của x (radian) | std::tan(0) | 0 |
#include <cmath>#include <iostream>
int main() { std::cout << std::pow(2, 10) << std::endl; // 1024 (2^10) std::cout << std::sqrt(16) << std::endl; // 4 (căn bậc hai) std::cout << std::cbrt(27) << std::endl; // 3 (căn bậc ba) std::cout << std::abs(-5) << std::endl; // 5 (giá trị tuyệt đối, số nguyên) std::cout << std::fabs(-5.5) << std::endl; // 5.5 (giá trị tuyệt đối, số thực) std::cout << std::floor(4.7) << std::endl; // 4 (làm tròn xuống) std::cout << std::ceil(4.2) << std::endl; // 5 (làm tròn lên) std::cout << std::round(4.5) << std::endl; // 5 (làm tròn gần nhất)
std::cout << std::log(2.718281828) << std::endl; // ~1 (log tự nhiên - ln) std::cout << std::log10(1000) << std::endl; // 3 (log cơ số 10) std::cout << std::exp(1) << std::endl; // ~2.71828 (e^1)
std::cout << std::sin(0) << std::endl; // 0 std::cout << std::cos(0) << std::endl; // 1 std::cout << std::tan(0) << std::endl; // 0
return 0;}Hằng số toán học
Phần tiêu đề “Hằng số toán học”C++20 bổ sung sẵn các hằng số trong <numbers>, nhưng cách phổ biến trước đó là tự khai báo hoặc dùng M_PI (không chuẩn ISO nhưng được hầu hết trình biên dịch hỗ trợ khi định nghĩa _USE_MATH_DEFINES):
#include <numbers> // C++20#include <iostream>
int main() { std::cout << std::numbers::pi << std::endl; // 3.14159... return 0;}Tổng kết
Phần tiêu đề “Tổng kết”- C++ dùng thư viện
<cmath>cho các hàm toán học như căn bậc hai, logarit, lượng giác… - Không có toán tử lũy thừa
**, phải dùngstd::pow() std::abs()dùng cho số nguyên,std::fabs()dùng cho số thực (float/double)<numbers>(C++20) cung cấp sẵn các hằng số toán học nhưstd::numbers::pi