主页 > 创业  > 

C++常用数学函数详解与代码示例

C++常用数学函数详解与代码示例
C++常用数学函数详解与代码示例

C++标准库<cmath>提供了丰富的数学函数,本文将通过代码示例讲解8类核心函数的用法。

一、绝对值函数 #include <iostream> #include <cmath> // 数学函数头文件 #include <cstdlib> // 用于整数绝对值 int main() { // 整数绝对值 int a = -5; std::cout << "abs(-5): " << std::abs(a) << "\n"; // 输出5 // 浮点数绝对值 double b = -3.14; std::cout << "fabs(-3.14): " << std::fabs(b) << "\n"; // 输出3.14 // C++11通用绝对值(自动匹配类型) std::cout << "std::abs(-2.718): " << std::abs(-2.718) << "\n"; // 输出2.718 return 0; } 二、四舍五入函数 #include <iostream> #include <cmath> int main() { double num1 = 2.3; double num2 = 2.5; double num3 = -2.5; std::cout << "round(2.3): " << std::round(num1) << "\n"; // 2 std::cout << "round(2.5): " << std::round(num2) << "\n"; // 3(向远离0方向舍入) std::cout << "round(-2.5): " << std::round(num3) << "\n"; // -3 return 0; } 三、取整函数 #include <iostream> #include <cmath> int main() { double x = 2.7; double y = 2.3; double z = -2.7; // 下取整(地板函数) std::cout << "floor(2.7): " << std::floor(x) << "\n"; // 2.0 std::cout << "floor(-2.7): " << std::floor(z) << "\n"; // -3.0 // 上取整(天花板函数) std::cout << "ceil(2.3): " << std::ceil(y) << "\n"; // 3.0 std::cout << "ceil(-2.7): " << std::ceil(z) << "\n"; // -2.0 // 强制转换为整数 int result = static_cast<int>(std::floor(3.99)); // 得到3 return 0; } 四、平方根函数 #include <iostream> #include <cmath> int main() { double val1 = 16.0; double val2 = -4.0; std::cout << "sqrt(16): " << std::sqrt(val1) << "\n"; // 4.0 std::cout << "sqrt(-4): " << std::sqrt(val2) << "\n"; // 输出nan(非数字) // 错误处理示例 if(std::isnan(std::sqrt(val2))) { std::cout << "Invalid input for sqrt!\n"; } return 0; } 五、三角函数 #include <iostream> #include <cmath> int main() { const double PI = 3.141592653589793; // 计算60度的正弦值(需转换为弧度) double angle = 60.0 * PI / 180.0; std::cout << "sin(60°): " << std::sin(angle) << "\n"; // ≈0.866025 // 反三角函数示例 double asin_val = std::asin(0.5) * 180 / PI; // 结果转换为角度 std::cout << "arcsin(0.5): " << asin_val << "°\n"; // 30° // 使用atan2计算方位角 std::cout << "atan2(1,1): " << std::atan2(1,1) << " radians\n"; // π/4 return 0; } 六、对数函数 #include <iostream> #include <cmath> int main() { // 自然对数(以e为底) std::cout << "ln(e): " << std::log(M_E) << "\n"; // 1.0 // 常用对数(以10为底) std::cout << "log10(1000): " << std::log10(1000) << "\n"; // 3.0 // 二进对数(C++11) std::cout << "log2(256): " << std::log2(256) << "\n"; // 8.0 // 错误示例 std::cout << "log(-1): " << std::log(-1) << "\n"; // 输出nan return 0; } 七、指数函数 #include <iostream> #include <cmath> int main() { // 自然指数函数 std::cout << "exp(1): " << std::exp(1) << "\n"; // ≈2.71828 // 幂函数 std::cout << "pow(2,3): " << std::pow(2,3) << "\n"; // 8.0 std::cout << "pow(8,1/3.0): " << std::pow(8,1/3.0) << "\n"; // 2.0 // 负数幂运算 std::cout << "pow(-2,3): " << std::pow(-2,3) << "\n"; // -8.0 std::cout << "pow(-2,2.5): " << std::pow(-2,2.5) << "\n"; // nan return 0; } 八、综合应用示例 #include <iostream> #include <cmath> // 计算二维空间两点距离 double distance(double x1, double y1, double x2, double y2) { return std::hypot(x2-x1, y2-y1); // 更安全的计算方式 } int main() { // 综合计算示例 double num = 3.7; std::cout << "综合运算:\n" << "原始值: " << num << "\n" << "绝对值: " << std::abs(num) << "\n" << "平方根: " << std::sqrt(num) << "\n" << "四舍五入: " << std::round(num) << "\n" << "下取整: " << std::floor(num) << "\n" << "上取整: " << std::ceil(num) << "\n" << "正弦值: " << std::sin(num) << "\n" << "自然对数: " << std::log(num) << "\n" << "e的幂次: " << std::exp(num) << "\n"; std::cout << "两点距离: " << distance(0,0,3,4) << "\n"; // 输出5.0 return 0; } 关键注意事项 类型匹配:注意整数和浮点函数的区别(如abs()与fabs())错误处理:负数平方根返回nan,对数函数需要正数输入单位转换:三角函数使用弧度制,需自行转换角度返回值类型:大部分函数返回double类型C++版本:部分函数(如round())需要C++11或更高标准

编译时建议使用以下命令:

g++ -std=c++11 -o math_demo math_demo.cpp

通过掌握这些核心数学函数,开发者可以高效实现各种数值计算需求。建议结合具体场景选择最合适的函数,并注意处理边界条件和异常输入。

标签:

C++常用数学函数详解与代码示例由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++常用数学函数详解与代码示例