math.h熟悉

it2025-12-27  11

1 #include <assert.h> //验证程序断言 2 #include <ctype.h> // 字符类型 3 #include <errno.h> // 出错码 4 #include <math.h> // 数学常量 5 #include <setjmp.h> // 非局部goto 6 #include <signal.h> // 信号 7 #include <stdarg.h> // 可变参数表 8 #include <stdio.h> // 标准I/O库 9 #include <stdlib.h> // 实用程序库函数 10 #include <string.h> // 字符串操作 11 #include <time.h> // 时间和日期 12 //#include 不常用: 13 #include <complex.h> //支持复数算术运算 14 #include <fenv.h> // 浮点环境 15 #include <float.h> // 浮点常量 16 #include <inttypes.h> //整型格式转换 17 #include <iso646.h> //替代关系操作符宏 18 #include <limits.h> // 实现常量 19 #include <locale.h> // 局部类别 20 #include <stdbool.h> //布尔类型和值 21 #include <stddef.h> // 标准定义 22 #include <stdint.h> // 整型 23 //#include <tgmath.h> //通用类型数学宏 24 #include <wchar.h> //扩展的多字节和宽字符支持 25 #include <wctype.h> //宽字符分类和映射支持 26 27 28 29 30 31 32 // double能精确到1e-15,float只能精确到1e-6,long double能精确到1e-18 33 // 计算几何,数学库,double类型的数在处理时候要有一个精度问题,一般定义成EPS 34 35 36 // 判断一个double类型的数是否为整数 37 // EPS的精度根据题目的要求自定 38 39 #include <math.h> 40 41 #define EPS 1e-8 42 43 inline int is_integer(double f) { 44 return fabs(round(f)-f) < EPS; 45 } 46 47 const double g_PI = atan2(0, -1); 48 49 const int g_a = is_integer(1.39); 50 51 #include <iostream> 52 #include <math.h> 53 #include <stdio.h> 54 #include <limits.h> 55 56 using namespace std; 57 58 int main() 59 { 60 61 printf("%lf\n", hypot(3, 4)); 62 63 64 /* 65 // round // 四舍五入 66 printf("%lf\n", round(0.4444444444444449)); 67 printf("%lf\n", round(0.5000000000000000)); 68 printf("%lf\n", round(0.51)); 69 printf("%lf\n", round(0.75)); 70 */ 71 72 /* 73 // ldexp, frexp // 一个数拆成a*2^b,合成a*2^b 74 // ldexp(5, 2) => 10 75 // frexp(10, &i) = > 5 && i = 1 76 77 int val; 78 79 printf("ldexp=[%lf]\n", ldexp(5, 1)); 80 double a = frexp(20, &val); 81 printf("frexp=[%lf, %d]\n", a, val); 82 */ 83 84 /* 85 // atan 86 printf("atan(-1234567899)/M_PI=[%.20lf]\n", atan(-1234567899)/M_PI); 87 printf("atan(0)/M_PI=[%.20lf]\n", atan(0)/M_PI); 88 printf("atan(1234567899)/M_PI=[%.20lf]\n", atan(1234567899)/M_PI); 89 */ 90 91 /* 92 // acos 93 printf("acos(-1)/M_PI=[%.20lf]\n", acos(-1)/M_PI); 94 printf("acos(0)/M_PI=[%.20lf]\n", acos(0)/M_PI); 95 printf("acos(1)/M_PI=[%.20lf]\n", acos(1)/M_PI); 96 */ 97 98 /* 99 // asin100 printf("asin(-1)/M_PI=[%.20lf]\n", asin(-1)/M_PI);101 printf("asin(0)/M_PI=[%.20lf]\n", asin(0)/M_PI);102 printf("asin(1)/M_PI=[%.20lf]\n", asin(1)/M_PI);103 */104 105 /*106 // atan2 // 求点(X, Y)与X正轴的夹角,[-pi, pi)107 printf("atan2/M_PI=[%.20lf]\n", atan2(-1, 0)/M_PI);108 printf("atan2/M_PI=[%.20lf]\n", atan2( 0, 1)/M_PI);109 printf("atan2/M_PI=[%.20lf]\n", atan2( 1, 0)/M_PI);110 printf("atan2/M_PI=[%.20lf]\n", atan2( 0, -1)/M_PI);111 */112 113 /*114 // log, log10 // lnx log10(x)115 printf("%lf\n", log(3));116 printf("%lf\n", log10(3));117 */118 119 /*120 // exp e^x121 printf("%lf\n", exp(3));122 */123 124 /*125 // pow, sqrt x^a, sqrt(x)126 printf("%lf\n", sqrt(2));127 128 printf("%lf\n", pow(2, -1));129 printf("%lf\n", pow(2, 0));130 printf("%lf\n", pow(2, 0.5));131 printf("%lf\n", pow(2, 2));132 printf("%lf\n", pow(2, 10));133 */134 135 /*136 // floor, ceil 下取整和上取整137 138 double x = 1.9999999999999998;139 printf("%lf\n", floor(x));140 printf("%lf\n", ceil(x));141 */142 143 144 /*145 // modf 先判断是否为整数 拆分成整数和小数146 double fraction, integer;147 double number = 1.9999999999999998;148 fraction = modf(number, &integer);149 printf("The whole and fractional parts of %lf are %lf and %lf\n", number, integer, fraction);150 */151 152 /*153 // fmod 余数判断是否和mod相等 小数求余154 printf("%.20lf\n", fmod(2.8, 0));155 156 // 浮点数不怕不一样,就怕相等,用fabs(a-b) < EPS来解决157 printf("%.20lf, %.20lf, %.20lf\n", 2.8, 0.2, fmod(2.8, 0.2));158 puts("===============================================\n");159 */160 161 /*162 // 三角函数163 // tan164 printf("tan(-M_PI/2)=[%.20lf]\n", tan(-M_PI/2));165 printf("tan(0)=[%.20lf]\n", tan(0));166 printf("tan(M_PI/2)=[%.20lf]\n", tan(M_PI/2));167 printf("tan(M_PI)=[%.20lf]\n", tan(M_PI));168 // 带周期169 printf("tan(1.5*M_PI)=[%.20lf]\n", tan(1.5*M_PI));170 printf("tan(2.0*M_PI)=[%.20lf]\n", tan(2.0*M_PI));171 printf("tan(2.5*M_PI)=[%.20lf]\n", tan(2.5*M_PI));172 printf("tan(3.0*M_PI)=[%.20lf]\n", tan(3.0*M_PI));173 puts("===============================================\n");174 175 // sin176 printf("sin(-M_PI/2)=[%.20lf]\n", sin(-M_PI/2));177 printf("sin(0)=[%.20lf]\n", sin(0));178 printf("sin(M_PI/2)=[%.20lf]\n", sin(M_PI/2));179 printf("sin(M_PI)=[%.20lf]\n", sin(M_PI));180 // 带周期181 printf("sin(1.5*M_PI)=[%.20lf]\n", sin(1.5*M_PI));182 printf("sin(2.0*M_PI)=[%.20lf]\n", sin(2.0*M_PI));183 printf("sin(2.5*M_PI)=[%.20lf]\n", sin(2.5*M_PI));184 printf("sin(3.0*M_PI)=[%.20lf]\n", sin(3.0*M_PI));185 puts("===============================================\n");186 187 // cos188 printf("cos(-M_PI/2)=[%.20lf]\n", cos(-M_PI/2));189 printf("cos(0)=[%.20lf]\n", cos(0));190 printf("cos(M_PI/2)=[%.20lf]\n", cos(M_PI/2));191 printf("cos(M_PI)=[%.20lf]\n", cos(M_PI));192 // 带周期193 printf("cos(1.5*M_PI)=[%.20lf]\n", cos(1.5*M_PI));194 printf("cos(2.0*M_PI)=[%.20lf]\n", cos(2.0*M_PI));195 printf("cos(2.5*M_PI)=[%.20lf]\n", cos(2.5*M_PI));196 printf("cos(3.0*M_PI)=[%.20lf]\n", cos(3.0*M_PI));197 puts("===============================================\n");198 */199 200 return 0;201 }

转载于:https://www.cnblogs.com/nysanier/archive/2012/04/04/2432512.html

最新回复(0)