我有这段非常简单的代码:
#include <cstdio>
#include <cmath>
int main(int argc, const char * argv[])
{
printf("%2.21f", atan2f(0.f, -1.f));
return 0;
}
在英特尔CPU上,下一步的输出如下:
Visual Studio 2010: 3.141592741012573200000
GCC 4.8.1 : 3.141592741012573242188
Xcode 5 : 3.141592502593994140625
阅读了Apple手册中关于atan2f的页面后,我期望打印出来的值应该接近于
3.14159265359
,因为他们说对于像我现在使用的特殊值,会返回+pi
。但是如您所见,从Xcode返回的值和期望值相差很大。这是否是已知问题?如果是,有没有解决方法?
atan2f
是否会将数字转换为更高的精度? - Carl Norum3.141592
。在所有三个近似值之后的数字都是错误的;它们是浮点表示的产物。 - Joni