c - 为什么 pow(10,2) 的结果是 99 而不是 100?

标签 c

我正在用 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已知编译时为 2base*base应该使用它——它快速、准确,并且避免 pow问题。如果exp在编译时未知为两个,因此代码的设计必须能够容忍pow中的不准确之处。或必须进行其他调整。 (对于更具体的情况或要求的问题,可以提供进一步的建议。)

关于c - 为什么 pow(10,2) 的结果是 99 而不是 100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057687/

相关文章:

java - 获取从 JNI 方法返回的直接缓冲区对象的数据到 Java?

在 ANSI C 中转换动态分配的任意指针数组

对 BSP_LCD_Init 的调用永远不会返回。卡在 HAL_DSI_shortwrite 中

C 程序生成随机大写字符串并替换值

c++ - 从 char 指针中减去 char 数组产生一个 int?

c - 你如何将从文件中读取的字符串拆分为C中的数组

c - 从文件读取后打印链表的段错误

c - RSA_sign()、object(3) 和 NID_sha1

我可以比较 2 个 SDL_Surface(它们是否相同)

c - 第一次调用 fread 后 ftell 错误