<cmath>
中的浮点函数<cmath>
(或者 C 的 <math.h>
) 中提供的都是浮点运算函数,对于整数运算并不适用。但是一些人 (特别是新入门选手) 往往将它们用于整数运算。
printf("%d\n", pow(10, 2));
printf("%.0f\n", fmod(pow(a, b), m));
这样求 显然是不行的,例如求 就会得到 nan
。
永远不要用浮点函数处理整数,除非你已经学了研究生的数值分析课程并且你能证明这不会引起任何问题。
对于例 1,直接写 10 * 10
即可。
对于例 2,需要自己写快速幂。
从教学的角度讲,建议将浮点数和 <math.h>
移动到 C 语言教科书最后一章 (甚至附录) 并详细讨论其局限性。