c语言pow返回是double,赋值给int型在循环外成功,用i,100就会变成99,是不是i不是整型

img


第一张图片中e是有变量i,值会变成99
f是一模一样的,但是传出值是100

img


第二张图片改成e改成double型就正常输出100

我的理解是 1.int-double存在精度丢失问题 ,2.换个编译器看看(换个编译器,我用的是DEVC++,两个结果一样)

pow默认的返回值是double类型,但可以(自动)强制转换后赋值给int类型的(不大于dobule值的整数),所以你第一图的程序可以运行,但结果可能不正确。

你问问题最好组织一下语言,都不通顺。

函数其原型为:double pow(double x, double y);
double 型数据存在误差问题,强制类型转换后有误差是正常现象。

double的十进制有效数字位数是15