- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言参考手册17
本章介绍的函数在库头文件math.h中声明。在标准C语言中,stdlib.h中还包含几 学函数,而C99用complex.h声明复数数学函数。 下面介绍本章数学函数的一般规则: 参数类型 在C99之前,所有浮点数的C语言库运算只对double类型参数定义。即使 float类型,这也是可行的,因为float参数会在调用之前自动转换为double参数。C99 float与long double类型参数定义了一组并行数学函数,分别在原函数名后面加上后缀f 每种浮点数参数用不同数学函数名使编程人员可以更好地控制性能与类型转换,但会 程序移植性。例如,将变量类型从double变成long double之后,就要编辑许多函数名 则会不知不觉遇到精度问题,因为long double参数要根据double函数原型转换成doq 类型。因此,C99在头文件tgmath.h(17.12节)中定义了通用类型宏。这些宏与原 double类型库函数同名,根据参数类型调用相应同名函数,就像内置的加法与乘法运算符 的操作一样。如果需要访问原#undef取消这些宏的定义(或不 tgmath.h)。这些宏要加进C99实现中,因为无法用C语言编写通用类型宏。 错误处理 数学函数可以进行两种一般化错误处理,但早期的C语言实现可能不按一致 处理。如果输入参数位于定义函数的定义域之外,或参数具有无限大和NaN之类特殊值, 生定义域错误。这时errno(见11.2节)设置为数值EDOM,函数返回一个由实现定义的值 统的错误返回值为0,但有些实现可能有更好的选择,如特殊的“非数字”值。 如errn0设置为E删 函数应返回与正确结果具有相同符号的最大可表示浮点数值。在C89中,这是宏HUGE—V. 值;C99中提供了HUGE VALF与HUGE VALL宏。C99可以灵活地控制哪种情形表示错误, 停止;哪种情形是遇到无限大或NaN,可以继续。 如果函数结果太小,无法表示,则函数返回0,errn0是否设置为ERANGE由实现确定。 1 7.1 abs、Iabs、Ilabs、div、ldiv、lIdiv 这些函数在stdlib.h中定义(见16.9节)。 17.2 fabs 语法概要 #includemath.h double labs(double X); float fabsf(floaf X)j//c99 long doubie fabsl(10ng double x); //C99 labs函数返回参数的绝对值。整型绝对值函数(abs、labs与1labs)在stdlib.h中定j 17章数学函数 303 参考章节abs、labs、1labs l6.9;通用类型宏 l7.12 1 7.3 ceil、floor、Irint、Ilrint、Iround、Ilround、nearbyint、round、rint、trunc #includemat:Ix.h //All new l:o C99 except:eeil, floor double ceil (c101:lble x); float: ceilf(fl oat;x); lortg clouble ceill(tong clouble x); double floot (double x)j float floorf C£10at x); long double floorl(10rlg double x)j double xaearbyint (double x); float: rtearbyirlt=f(fl oat:x); lortg double nearbyintl (10ng double x); double first (double x); float: rirlt:f(float x); lortg double rirltl(1 0ng dotti3le x); longizat:1tint:(double x); l ong irLt:1rintf(float:x); long irlt:lrirtt=l(10ng dottble x)j l ong long int llrint (double x)j long long int llrint£ (float:x); long lorlg int llrirlt:l(10ng double x); double round (dottble x); float: ro
文档评论(0)