今天发生在我身上的一件奇怪的事情,当我尝试编译并执行此代码的输出时并不是我所期望的.下面的代码只是将浮动值添加到float数组中,然后将其打印出来.简单的代码:
int main(){
float r[10];
int z;
int i=34;
for(z=0;z<10;z++){
i=z*z*z;
r[z]=i;
r[z]=r[z]+0.634;
printf("%f\n",r[z]);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
0.634000
1.634000
8.634000
27.634001
64.634003
125.634003
216.634003
343.634003
512.633972
729.633972
Run Code Online (Sandbox Code Playgroud)
请注意,从.634之后出现的数字应该不在那里.谁知道为什么会这样?这是由浮点近似引起的事件?
PS我有一个linux debian系统,64位
谢谢大家