为什么gcc编译器输出pow(10,2)为99而不是100 ?

Why does gcc compiler output pow(10,2) as 99 not 100?

本文关键字:输出 编译器 gcc pow 为什么      更新时间:2023-10-16
#include <iostream.h>
#include <math.h>
int main()
{
    int j=2;
    int output;
    output=pow(10,j);
    cout<<output;
    return 0;
}

我将上面的代码写入gcc 12编译器,得到的输出是99而不是100。在各种网站上搜索时,我没有得到有效的理由。是否有编译器问题?

因为整数截断。pow()返回一个浮点值,由于浮点运算,它可能是~ 99.999...;然而,由于整数截断,即使99.999...也被截断为99。