float f = atan(1.0);
结果0.000,肯定不对
没装过补丁之类,DEBUG编译下的问题。我发汇编跟踪进去看了一下,没用传统浮点,用SSE了,一时看不懂。
当然这个问题其它版本应该不会有,真是2008错的话,我就升级一下

解决方案 »

  1.   

    没遇到过  感觉应该不会 要也是相关math库的问题
      

  2.   

    VS2008 
     
    #include <stdio.h>
    #include <math.h>
    int main()
    {
    float f = atan(1.0);
    printf("%f\n",f);
        return 0;
    }
    输出 0.785398
      

  3.   


    谢谢!
    不知道问题在哪里。我的WINXP64?
    我再试试
      

  4.   

    感谢各位,问题解决,不是VC的BUG。
    问题掩盖的项目里面,有点复杂。本来不是我的LINUX项目,我弄到VC里,结果不同,费了好大力气才锁定atan,累得我直接就拿上来问了. 
    项目文件太多,我没意识到其中一个C文件没INCLUDE math.h, 而是他们自己一个H里DEFINE了atan, 参数是float, GCC编译正确,但是在VC库里必须是double。 反汇编看了一下,问题应该是VC直接用了SSE2的XMMS寄存器做这个计算,而GCC全在传统浮点寄存器里面,造成结果不同。