简要介绍C语言与c++共有的数学函数

 

C语言和C++都提供了丰富的数学函数,这些函数主要定义在 <math.h>(C语言)和 <cmath>(C++)头文件中。以下分别介绍C语言与C++共有的数学函数,以及C++特有的数学函数。


C语言与C++共有的数学函数(介绍格式为:函数原型+示例(C++版))

这些函数在C语言和C++中都可以使用,功能和用法完全一致。它们主要定义在C语言的 <math.h> 和C++的 <cmath> 头文件中。

1. 基本数学运算
  • 绝对值

    • int abs(int x);——计算整数的绝对值。形参为int型,返回值为int 型

    • double fabs(double x);——计算浮点数的绝对值。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {int a = -5;double b = -3.14;std::cout  << abs(a) << std::endl;std::cout  << fabs(b) << std::endl;return 0;
      }输出
      5
      3.14
  • 平方根

    • double sqrt(double x);——计算平方根。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {int a = 25.0;std::cout  << sqrt(a) << std::endl;return 0;
      }输出
      5
  • 立方根

    • double cbrt(double x);——计算立方根。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {int a = 125.0;std::cout  << cbrt(a) << std::endl;return 0;
      }
      输出
      5
  • 幂运算

    • double pow(double base, double exp);——计算base^{exp}形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {int a = 5.0;std::cout  << pow(a,3) << std::endl;return 0;
      }输出
      125
2. 三角函数(这类函数不好用)
  • 正弦

    • double sin(double x);——计算 sin(x),其中 x 是弧度。形参为double型,返回值为double型

    • 示例:

      #include <cmath>
      int main() {double angle = M_PI / 2; // 90度std::cout << "sin(" << angle << ") = " << sin(angle) << std::endl;return 0;
      }
  • 余弦

    • double cos(double x);——计算 cos(x),其中 x 是弧度。形参为double型,返回值为double型

    • 示例:

      #include <cmath>
      int main() {double angle = M_PI; // 180度std::cout << "cos(" << angle << ") = " << cos(angle) << std::endl;return 0;
      }
  • 正切

    • double tan(double x);——计算 tan(x),其中 x 是弧度。形参为double型,返回值为double型

    • 示例:

      #include <cmath>
      int main() {double angle = M_PI / 4; // 45度std::cout << "tan(" << angle << ") = " << tan(angle) << std::endl;return 0;
      }
3. 反三角函数(函数返回值为弧度,这类函数不好用)
  • 反正弦

    • double asin(double x);——计算 arcsin(x),返回值为弧度。形参为double型,返回值为double型

    • 详细运用示例:

#include <iostream> // 包含标准输入输出流库
#include <iomanip>  // 包含用于格式化输出的库,如setprecision
#include <cmath>    // 包含数学函数库,如asin
#define PI 3.14159  // 定义圆周率PI的值为3.14159
using namespace std; // 使用标准命名空间int main() {double A; // 定义一个双精度浮点型变量A,用于存储输入的正弦值cin >> A; // 从标准输入读取一个值到变量A中// 使用asin函数计算A的反正弦值,结果以弧度为单位double B = asin(A); // 将弧度值B转换为度数,并设置输出精度为小数点后两位// asin返回的是弧度值,通过乘以180/PI将其转换为度数cout << setprecision(2) << B * 180 / PI << endl;return 0; // 程序正常结束
}输入  1
输出  90

关键点解释

  • asin 函数

    • asin 是反正弦函数,输入范围为 [−1,1],输出范围为 [−π/2,π/2] 弧度。

    • 如果输入的值不在 [−1,1] 范围内,程序会报错。

  • 弧度转度数

    • 弧度和度数的转换公式是:

      度数=弧度×π/180​
    • 在代码中,B * 180 / PI 就是按照这个公式进行转换的。

  • setprecision(2)

    • 这是 <iomanip> 库提供的功能,用于设置输出的小数精度。这里设置为保留两位小数。

  • 示例运行

    假设用户输入 0.5,程序的运行过程如下:

  • 输入:0.5

  • asin(0.5) 的结果是 6π​ 弧度(约等于 0.5236 弧度)。

  • 将弧度转换为度数:

    0.5236×π/180​≈30.00
  • 输出:30.00

  • 输入范围

        用户输入的值 A 必须在 [−1,1] 范围内,否则 asin 函数会抛出错误。

  • 反余弦

    • double acos(double x);——计算 arccos(x),返回值为弧度。形参为double型,返回值为double型

    • 示例:

      #include <cmath>
      int main() {double value = 0.5;std::cout << "acos(" << value << ") = " << acos(value) << " radians" << std::endl;return 0;
      }
  • 反正切

    • double atan(double x);——计算 arctan(x),返回值为弧度。形参为double型,返回值为double型

    • 示例:

      #include <cmath>
      int main() {double value = 1.0;std::cout << "atan(" << value << ") = " << atan(value) << " radians" << std::endl;return 0;
      }
4. 对数函数
  • 自然对数

    • double log(double x);——计算 ln(x)。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num = 10.0;std::cout << "log(" << num << ") = " << log(num) << std::endl;return 0;
      }输出   log(10) = 2.30259   
  • 常用对数

    • double log10(double x);——计算 log10​(x)。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num = 100.0;std::cout << "log10(" << num << ") = " << log10(num) << std::endl;return 0;
      }输出  log10(100) = 2    
5. 取整函数
  • 向上取整(即取小于给定数值+1的最大整数。)

    • double ceil(double x);——向上取整。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num = 3.14;std::cout << "ceil(" << num << ") = " << ceil(num) << std::endl;return 0;
      }输出  ceil(3.14) = 4 
  • 向下取整(即取不大于给定数值的最大整数。)

    • double floor(double x);——向下取整。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num = 3.14;std::cout << "floor(" << num << ") = " << floor(num) << std::endl;return 0;
      }输出  floor(3.14) = 3 
  • 四舍五入

    • double round(double x);——四舍五入。形参为double型,返回值为double型

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num ;std::cout  << round(num) << std::endl;return 0;
      }输入  3.44
      输出  3输入  3.54
      输出  4

C++特有的数学函数

C++在继承C语言的基础上,增加了一些新的数学函数,主要用于更复杂的数学运算和类型扩展。

  • 提取浮点数的整数部分(这个函数多此一举,功能与向下取整函数没区别)

    • double trunc(double x);——提取浮点数的整数部分。

    • 示例:

      #include<iostream>
      #include <cmath>
      int main() {double num = 3.14;std::cout << "trunc(" << num << ") = " << trunc(num) << std::endl;return 0;
      }输出   trunc(3.14) = 3   

收藏加关注,观看不迷路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10062.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVIDIA GPU介绍:概念、序列、核心、A100、H100

概述 入职一家大模型领域创业公司&#xff0c;恶补相关知识。 概念 一些概念&#xff1a; HPC&#xff1a;High Performance Computing&#xff0c;高性能计算SoC&#xff1a;System on Chip&#xff0c;单片系统FLOPS&#xff1a;Floating Point Operations Per Second&am…

Python中的函数(下)

函数返回值 返回单个值 函数可以通过 return 语句返回一个值。一旦执行到 return 语句&#xff0c;函数就会停止执行&#xff0c;并将指定的值返回给调用者。例如&#xff1a; 返回多个值 实际上&#xff0c;Python函数只能返回一个值&#xff0c;但可以通过返回一个元组来模…

python算法和数据结构刷题[2]:链表、队列、栈

链表 链表的节点定义&#xff1a; class Node():def __init__(self,item,nextNone):self.itemitemself.nextNone 删除节点&#xff1a; 删除节点前的节点的next指针指向删除节点的后一个节点 添加节点&#xff1a; 单链表 class Node():"""单链表的结点&quo…

https数字签名手动验签

以bing.com 为例 1. CA 层级的基本概念 CA 层级是一种树状结构&#xff0c;由多个层级的 CA 组成。每个 CA 负责为其下一层级的实体&#xff08;如子 CA 或终端实体&#xff09;颁发证书。层级结构的顶端是 根 CA&#xff08;Root CA&#xff09;&#xff0c;它是整个 PKI 体…

S4 HANA明确税金本币和外币之间转换汇率确定(OBC8)

本文主要介绍在S4 HANA OP中明确明确税金本币和外币之间转换汇率确定(OBC8)相关设置。具体请参照如下内容&#xff1a; 明确税金本币和外币之间转换汇率确定(OBC8) 以上配置&#xff0c;我们可以根据不同公司代码所配置的使用不同的汇率来对税金外币和本币之间进行换算。来针对…

YOLOv8源码修改(4)- 实现YOLOv8模型剪枝(任意YOLO模型的简单剪枝)

目录 前言 1. 需修改的源码文件 1.1添加C2f_v2模块 1.2 修改模型读取方式 1.3 增加 L1 正则约束化训练 1.4 在tensorboard上增加BN层权重和偏置参数分布的可视化 1.5 增加剪枝处理文件 2. 工程目录结构 3. 源码文件修改 3.1 添加C2f_v2模块和模型读取 3.2 添加L1正则…

深入解析 C++17 中的 std::not_fn

文章目录 1. std::not_fn 的定义与目的2. 基本用法2.1 基本示例2.2 使用 Lambda 表达式2.3 与其他函数适配器的比较3. 在标准库中的应用3.1 结合标准库算法使用3.1.1 std::find_if 中的应用3.1.2 std::remove_if 中的应用3.1.3 其他标准库算法中的应用4. 高级技巧与最佳实践4.1…

【腾讯云】腾讯云docker搭建单机hadoop

这里写目录标题 下载jdk hadoop修改hadoop配置编写Dockerfile构建镜像运行镜像创建客户端 下载jdk hadoop wget --no-check-certificate https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz wget --no-check-certificate https://repo.huaweicloud.…

SpringBoot 原理分析

SpringBoot 原理分析 依赖管理相关 启动器 starter Spring Boot 的 Starter 是预定义依赖项集合&#xff0c;可简化 Spring 应用配置与构建&#xff0c;启动时自动引入所需库、配置和功能。 Spring Boot 有很多预定义 Starter&#xff0c;如 spring - boot - starter - web 用…

MySQL 索引存储结构

索引是优化数据库查询最重要的方式之一&#xff0c;它是在 MySQL 的存储引擎层中实现的&#xff0c;所以 每一种存储引擎对应的索引不一定相同。我们可以通过下面这张表格&#xff0c;看看不同的存储引擎 分别支持哪种索引类型&#xff1a; BTree 索引和 Hash 索引是我们比较…

5.桥模式(Bridge)

动机 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;乃至多个纬度的变化。 &#xfeff;class Messager{ public:// 登录virtual void Login(string username, string password)0;// 发送消息virtual void SendMessage(string message)0;/…

【Rust自学】15.1. 使用Box<T>智能指针来指向堆内存上的数据

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 15.1.1. Box<T> box<T>可以被简单地理解为装箱&#xff0c;它是最简单的智能指针&#xff0c;允许你在堆内存上存储数据&am…

【电工基础】低压电器元件,低压断路器(空开QF),接触器(KM)

一.低压电器元件定义 电器可分为高压电器和低压电器两大类&#xff0c;我国现行标准是将工作在交流1200V(50Hz)以下、直流1500V以下的电器设备称为低压电器。 二.低压断路器&#xff0c;空开&#xff0c;空气断路器 1.空开图片与使用方式 当电路中发生严重过载、短路及失压等故…

论文阅读(七):贝叶斯因果表型网络解释遗传变异和生物学知识

1.论文链接&#xff1a;Bayesian Causal Phenotype Network Incorporating Genetic Variation and Biological Knowledge 摘要&#xff1a; 在分离群体中&#xff0c;数量性状基因座&#xff08;QTL&#xff09;定位可以确定对表型有因果效应的QTL。这些方法的一个共同特点是Q…

DeepSeek-R1 模型及GRPO算法学习

总结DeepSeek-R1 模型算法&#xff0c;并对其中的GRPO算法做一些学习补充。 DeepSeek-R1 论文总结 提出了通过强化学习提升大语言模型推理能力的方法&#xff0c;开发出 DeepSeek-R1-Zero 和 DeepSeek-R1 模型&#xff0c;在多个推理任务上表现出色&#xff0c;并开源模型推动…

灰色预测模型

特点&#xff1a; 利用少量、不完全的信息 预测的是指数型的数值 预测的是比较近的数据 灰色生成数列原理&#xff1a; 累加生成&#xff1a; 累减生成&#xff1a;通过累减生成还原成原始数列。 加权相邻生成&#xff1a;&#xff08;会更接近每月中旬&#xff0c;更推荐…

(笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识

学员闯关手册&#xff1a;https://aicarrier.feishu.cn/wiki/QtJnweAW1iFl8LkoMKGcsUS9nld 课程视频&#xff1a;https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业&#xff1a;htt…

JSR303校验教学

1、什么是JSR303校验 JSR是Java Specification Requests的缩写&#xff0c;意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR&#xff0c;以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。…

springboot使用rabbitmq

使用springboot创建rabbitMQ的链接。 整个项目结构如下&#xff1a; 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…

WordPress使用(1)

1. 概述 WordPress是一个开源博客框架&#xff0c;配合不同主题&#xff0c;可以有多种展现方式&#xff0c;博客、企业官网、CMS系统等&#xff0c;都可以很好的实现。 官网&#xff1a;博客工具、发布平台和内容管理系统 – WordPress.org China 简体中文&#xff0c;这里可…