#include
#include
int main()
{
float x1=(3,14+1e10)-1e10;
float x2=3.14+(1e10-1e10);
printf("%f\n%f\n",x1,x2);
system("pause");
return 0;
}
打印的x1和x2的值不应该是0和3.14吗?为什么我编译的结果是14和3.14呢,求解释。
精度问题,因为3.14和1e10差别太大,超过float有效精度表示范围。
并且这个误差,在不同编译器(运算顺序),不同计算机指令集(fpu/isse2/isse3)误差不同,所以没有所谓的理论一说。
因为你打错了符号,x中是逗号。