我正在用 c 语言创建一个新项目,但函数 pow“不起作用”。我该怎么解决?
它实际上是 2 的 10 次方,但 10 的 1 次方是 99
#include <stdio.h>
#include <math.h>
int main() {
int res = pow(10, 2);
printf("%d", res);
return 0;
}
我预计 的输出为 100,但输出为 99
最佳答案
pow(10, 2)
产生略低于 100 的值,因为它是 pow
的低质量实现这不会返回一个好的结果。
pow
这是一个很难实现的功能,所有商业实现都会产生许多在某种程度上不准确的结果。然而,良好的实现会努力使某些情况完全正确,包括结果恰好是整数(或者就此而言,是有理数)的情况。
在 pow(base, exp)
,如果exp
已知编译时为 2,base*base
应该使用它——它快速、准确,并且避免 pow
问题。如果exp
在编译时未知为两个,因此代码的设计必须能够容忍pow
中的不准确之处。或必须进行其他调整。 (对于更具体的情况或要求的问题,可以提供进一步的建议。)
关于c - 为什么 pow(10,2) 的结果是 99 而不是 100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057687/