C标准库学习之<math.h> ——数学函数
2017-01-24 16:32
537 查看
数学头文件定义了很多数学函数。
宏:
函数:
错误条件
所有math.h函数产生错误的情形都是类似的。
当传递给函数的参数超出了函数要求的参数定义域时,变量errno被设置为EDOM。函数的返回值是依实现而定的。
当返回值太大而超出了double的数值范围时,函数返回宏值HUGE_VAL,并且设置变量errno为ERANGE来表示溢出。如果值太小以至于无法表示为double,则函数返回0。在这种情况下,errno是否被设置为ERANGE是依实现而定。
errno,EDOM,和ERANGE在头文件errno.h中定义。
注意在所有没有定义域限制的情形(即默认情况)下,参数的值被double类型的最大值和最小值所限制。
宏:
HUGE_VAL
函数:
acos(); asin(); atan(); atan2(); ceil(); cos(); cosh(); exp(); fabs(); floor(); fmod(); frexp(); ldexp(); log(); log10(); modf(); pow(); sin(); sinh(); sqrt(); tan(); tanh();
错误条件
所有math.h函数产生错误的情形都是类似的。
当传递给函数的参数超出了函数要求的参数定义域时,变量errno被设置为EDOM。函数的返回值是依实现而定的。
当返回值太大而超出了double的数值范围时,函数返回宏值HUGE_VAL,并且设置变量errno为ERANGE来表示溢出。如果值太小以至于无法表示为double,则函数返回0。在这种情况下,errno是否被设置为ERANGE是依实现而定。
errno,EDOM,和ERANGE在头文件errno.h中定义。
注意在所有没有定义域限制的情形(即默认情况)下,参数的值被double类型的最大值和最小值所限制。
#include <stdio.h> #include <math.h> /* ========================================================= time: 2017年1月24日11:29:21 objective: test C language's head file of <math.h> version: Microsoft Visual C++ author: ChenFei remark: 日文system,,有些字没法打,要用拼音代替 ========================================================= */ int main(void) { double a = 10; double b = 3; double c; c = pow(a, b); // a的b 次方 double pow(double x, double y); printf("%f\n",c); double d; d = fmod(a,b); // a/b 的余数 double fmod(double x, double y); printf("%f\n",d); double e; e = sqrt(a); // a 的平方根 double sqrt(double x, double y); printf("%f\n",e); double f; f = exp(a); // exp:自然dui数 e yu等于 2.718282 printf("%f\n",f); // exp(a) -> e的 a次方 double exp(double x, double y); double g, h; g = log(a); // e的 g次方 = a,求g (求 以e wei底 a 的 dui数) double log(double x); h = log10(a); // 10的 h次方 = a,求h (求 以10 wei底 a 的 dui数) double log10(double x); printf("%f\n",g); printf("%f\n",h); double i, j; i = ceil(a); // 向上舍入:i >= a ,求整数i,返回double type。(jin一法) double ceil(double x); j = floor(11.1); // 向下舍入:j <= a ,求整数j,返回double type。(去尾法) double florr(double x); printf("%f\n",i); // %d 无效 == 0 printf("%f\n",j); double k; k = fabs(a); // k = |a| double fabs(double x); printf("%f\n",k); double l; l = ldexp(a, 1); // l = a * 2 的 1次方 double ldexp(double x, int n); printf("%f\n",l); double m; int aa; m = frexp(a, &aa); // a = m * 2^aa 求m double frexp(double x, int* exp); printf("%f,%d\n",m,aa); double n; double ba; n = modf(-2.02, &ba); // 分解-2.02,n wei小数部分,ba wei整数部分 double modf(double x, double* ip); printf("%f,%f\n",n,ba); //正弦 余弦 正切 double sin(double x); double cos(double x); double tan(double x); //反正弦 反余弦 反正切1 反正切2 double asin(double x); double acos(double x); double atan(double x); double atan2(double y, double x); //双曲正弦 双曲余弦 双曲正切 double sinh(double x); double cosh(double x); double tanh(double x); return 0; }
相关文章推荐
- C标准库学习之<assert.h> ——诊断
- C标准库学习之<ctype.h> ——字符处理
- #inclue<math.h>函数学习 不断更新
- C标准库学习之<errno.h> ——错误
- C标准库学习之<setjmp.h> ——非局部跳转
- C标准库学习之<stddef.h> ——定义部分宏
- <<C标准库>>: <math.h>
- 学习Extjs之旅<一>
- C#基础学习日志===&amp;amp;amp;amp;gt;命名空间的使用&amp;amp;amp;amp;lt;===
- linux初学者学习大全&lt;转&gt;
- 我的JavaScript学习笔记<续>
- C#基础学习日志===>二维数组<===
- HtmlUnit学习<二>
- HtmlUnit学习<->
- Nullable<T>学习笔记
- Mule 学习系列<二> File Transport
- EXTJS学习方案<二>
- 有空看完<Beginning Xml with C# 2008>这本书, 深入学习一下Xml.
- C#基础学习日志===>二维数组<===
- Sql Server2005 Transact-SQL 新兵器学习总结之-排名函数 <转>