💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 【知识精讲】数学函数 ## Part1 在 C 语言(没错,就是 C 语言)的数学(math)函数库中,有很多不同的数学函数—— C++ 语言完整继承了 C 语言的绝大多数库,其中就包括 math 库。在使用的时候,直接引用即可。需要说明的是,学过 C 语言的同学可能会注意到 C 语言中引用 math 库时的文件名是`math.h`,虽然在 C++ 语言中,你依然可以这么写,但是更好的写法应该是`cmath`——所有继承的 C 库,在 C++ 中都应该这么写,即以`c某某某`的名字引入。 刚才小渡和你已经一起学习了一下 `pow` 函数(其实它的名字是 power 的缩写),现在让我们一起来再学习一下绝对值函数、三角函数、对数函数、取整函数、平方根函数这些数学函数在 C 语言中的使用。 ## Part2 **绝对值函数** 在 C 语言中有两个常用的绝对值函数,分别是 `abs` 函数和 `fabs` 函数。 其中 `abs` 函数传入的参数需要是一个整数,返回的结果则会是这个传入的整数的绝对值。例如, `abs(-4)`的返回值会是 444。 而 `fabs` 函数,就明显是一个起名很友好的函数,其中 `f` 表示了浮点数。所以它是一个类似于`abs`函数,但传入的参数是浮点数的函数——当然,返回的结果就是所传入的浮点数的绝对值。例如,`fabs(-3.14)`的返回值会是 3.143.143.14,`fabs(2.7)`的返回值会是 2.72.72.7。 就像我们上面介绍的那样,C++ 语言几乎实现了对 C 语言的源码级兼容——所以你仍然可以使用这两个函数。但是因为 C++ 语言支持一种名为**函数重载**的特性,所以你可以直接使用`abs`函数来计算多种形式的数字——包括整数和浮点数。关于函数重载的详细内容,我们将会在后续课程中向大家介绍。 ## Part3 **三角函数** 在`cmath`数学库中,包含了我们常用的三角函数:正弦 `sin`、余弦 `cos`、正切 `tan`、反正弦 `asin`、反余弦 `acos`、反正切 `atan`。它们都接受一个(双精度)浮点数值作为传入的参数,返回的则是对应的数学定义上的三角函数被应用在传入的浮点数值后的结果,类型也是(双精度)浮点数。 例如, `tan(3.1415926535/4)` 的返回值是 1.0000001.0000001.000000,`acos(0.32696)` 的返回值是 1.2377111.2377111.237711。 ## Part4 **对数函数** 对于以 e 为底的对数函数 lnx ,`cmath`数学库中提供了名为 `log` 的函数;而对于以 10 为底的对数函数,数学库中则提供了一个名为 `log10` 的函数。 与三角函数类似,它们都接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的相应对数函数被应用在传入的浮点数值后的结果,类型也是(双精度)浮点数。 例如,`log(2.71828)` 的返回值是 0.999999,而 `log10(100)` 的返回值是 2.000000。 ## Part5 在数学库中还有**上取整函数**(天花板函数)`ceil` 和**下取整函数**(地板函数)`floor`。它们接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的相应上、下取整后的浮点数结果。例如,`floor(2.7)` 的结果会是 2.0000002.0000002.000000,`ceil(-3.2)`的结果会是 −3.000000\-3.000000−3.000000。 另外,数学库中还有一个求平方根的函数 `sqrt`。它接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的浮点数结果。例如,`sqrt(42.25)`的结果会是 6.5000006.5000006.500000。 接下来的课程中,我们可就要试着使用这些数学函数了喔! ## Part6