超级高手看过来(怪事年年有,今年特别多)
遇到一浮点数的怪事。简化出来的程序如下。
VC6+SP4 Win32 console 程序,还未用其它编译器试过
#include "stdafx.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
float temp = atof("1210952.74");
printf("temp is %f\n",temp);
printf("temp is %f\n",temp);
return 0;
}
两次打印出来的值不一样。
有人说是浮点数的精度问题,但没法解释上面的现象。
照程序调用方式来看,我用的是值传递,每次调用printf 是都是将temp的值压入堆栈,所以两次的结果没有理由不一样。
看看哪位大侠能够解释 ?学生先谢过了。
如果没人能解释,实在不行,我可能要跟踪一下它的汇编代码了。:(